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 Eternal Force Field v1.0.0
plugins/Digitalroot.Valheim.EternalForceField.dll
Decompiled a day agousing System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using System.Text; using System.Threading; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using Digitalroot.Modding.Framework.Common.Json; using Digitalroot.Modding.Framework.Logging; using Digitalroot.Modding.Framework.Names.Vanilla; using Digitalroot.Modding.Framework.Utils; using JetBrains.Annotations; using Jotunn.Configs; using Jotunn.Entities; using Jotunn.Managers; using Jotunn.Utils; using SimpleJson; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("Digitalroot.Valheim.EternalForceField")] [assembly: AssemblyDescription("Eternal Force Field")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("Digitalroot Technologies")] [assembly: AssemblyProduct("Digitalroot Valheim Mods")] [assembly: AssemblyCopyright("Copyright © Digitalroot Technologies 2021 - 2026")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("3ccc4dc1-5b17-47c1-b996-ca03b8639a61")] [assembly: AssemblyFileVersion("1.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace Digitalroot.Valheim.EternalForceField { [BepInPlugin("digitalroot.eternalforcefield", "Eternal Force Field", "1.0.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] public class Main : BaseUnityPlugin, ITraceableLogging { internal static class PluginConfigSection { internal static readonly string General = "General"; internal static readonly string Advanced = "Advanced"; internal static readonly string ForceField = "ForceField"; } public static Main Instance; private const string TotemPreFabName = "piece_bone_totem_force_field"; private const float BaseForceFieldSize = 6f; public const string Version = "1.0.0"; public const string Name = "Eternal Force Field"; public const string Guid = "digitalroot.eternalforcefield"; public const string Namespace = "Digitalroot.Valheim.EternalForceField"; [UsedImplicitly] public static ConfigEntry<int> NexusId { get; private set; } public static ConfigEntry<float> Size { get; private set; } private static Vector3 ForceFieldScale => Vector3.one * (6f + Size.Value); public string Source => "Digitalroot.Valheim.EternalForceField"; public bool EnableTrace { get; } public Main() { Instance = this; EnableTrace = false; } [UsedImplicitly] private void Awake() { //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Expected O, but got Unknown //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Expected O, but got Unknown //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Expected O, but got Unknown //IL_00fc: Unknown result type (might be due to invalid IL or missing references) //IL_0106: Expected O, but got Unknown try { if (EnableTrace) { Log.Trace(Instance, MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name); } NexusId = ((BaseUnityPlugin)this).Config.Bind<int>(PluginConfigSection.General, "NexusID", 4424, new ConfigDescription("Nexus mod ID for updates", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes { Browsable = false, ReadOnly = true } })); Size = ((BaseUnityPlugin)this).Config.Bind<float>(PluginConfigSection.Advanced, "ForceFieldSize", 40f, new ConfigDescription("Size of the Force Field", (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 100f), new object[1] { (object)new ConfigurationManagerAttributes { Browsable = true, ReadOnly = false, IsAdminOnly = true, IsAdvanced = true } })); PrefabManager.OnVanillaPrefabsAvailable += PrefabManager_OnVanillaPrefabsAvailable; Size.SettingChanged += Size_SettingChanged; } catch (Exception e) { Log.Error(Instance, e); } } [UsedImplicitly] private void OnDestroy() { try { if (EnableTrace) { Log.Trace(Instance, MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name); } PrefabManager.OnVanillaPrefabsAvailable -= PrefabManager_OnVanillaPrefabsAvailable; Size.SettingChanged -= Size_SettingChanged; } catch (Exception e) { Log.Error(Instance, e); } } private static GameObject CreateKitbashedPrefab() { //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Expected O, but got Unknown //IL_010f: Expected O, but got Unknown //IL_02c4: Unknown result type (might be due to invalid IL or missing references) //IL_02c9: Unknown result type (might be due to invalid IL or missing references) //IL_02cd: Unknown result type (might be due to invalid IL or missing references) //IL_02cf: Unknown result type (might be due to invalid IL or missing references) //IL_02d9: Unknown result type (might be due to invalid IL or missing references) //IL_02de: Unknown result type (might be due to invalid IL or missing references) //IL_02ee: Unknown result type (might be due to invalid IL or missing references) //IL_02f3: Unknown result type (might be due to invalid IL or missing references) //IL_02fe: Unknown result type (might be due to invalid IL or missing references) //IL_0305: Expected O, but got Unknown //IL_030f: Unknown result type (might be due to invalid IL or missing references) //IL_0316: Unknown result type (might be due to invalid IL or missing references) //IL_031b: Unknown result type (might be due to invalid IL or missing references) //IL_0322: Unknown result type (might be due to invalid IL or missing references) //IL_0329: Unknown result type (might be due to invalid IL or missing references) //IL_032e: Unknown result type (might be due to invalid IL or missing references) //IL_0349: Unknown result type (might be due to invalid IL or missing references) //IL_034e: Unknown result type (might be due to invalid IL or missing references) //IL_035f: Unknown result type (might be due to invalid IL or missing references) //IL_0364: Unknown result type (might be due to invalid IL or missing references) //IL_037b: Unknown result type (might be due to invalid IL or missing references) if (Instance.EnableTrace) { Log.Trace(Instance, MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name); } GameObject totem = PrefabManager.Instance.CreateClonedPrefab("piece_bone_totem_force_field", "goblin_totempole"); if (!Object.op_Implicit((Object)(object)totem.GetComponent<Piece>())) { totem.AddComponent<Piece>(); } KitbashObject obj = KitbashManager.Instance.AddKitbash(totem, new KitbashConfig { FixReferences = true, KitbashSources = new List<KitbashSourceConfig> { new KitbashSourceConfig { Name = PluginConfigSection.ForceField, SourcePrefab = "Hildir_camp", SourcePath = PluginConfigSection.ForceField, Position = new Vector3(0f, -0.5f, 0f), Rotation = Quaternion.identity, Scale = ForceFieldScale } } }); obj.OnKitbashApplied = (Action)Delegate.Combine(obj.OnKitbashApplied, (Action)delegate { //IL_0021: Unknown result type (might be due to invalid IL or missing references) Transform val4 = totem.transform.Find(PluginConfigSection.ForceField); if (!((Object)(object)val4 == (Object)null)) { val4.localScale = ForceFieldScale; MeshRenderer[] componentsInChildren2 = ((Component)val4).GetComponentsInChildren<MeshRenderer>(true); foreach (MeshRenderer val5 in componentsInChildren2) { Material[] array2 = ((IEnumerable<Material>)((Renderer)val5).sharedMaterials).Select((Func<Material, Material>)((Material m) => new Material(m))).ToArray(); Material[] array3 = array2; foreach (Material val6 in array3) { if (val6.HasProperty("_RefractionIntensity")) { float num3 = val6.GetFloat("_RefractionIntensity"); val6.SetFloat("_RefractionIntensity", num3 * 0.5f); if (Instance.EnableTrace) { Log.Trace(Instance, string.Format("{0}.{1} [{2} -> {3}]", "Main", "CreateKitbashedPrefab", num3, num3 * 0.5f)); } } } ((Renderer)val5).sharedMaterials = array2; } } }); Pickable component = totem.GetComponent<Pickable>(); if (Object.op_Implicit((Object)(object)component)) { Object.DestroyImmediate((Object)(object)component); } DropOnDestroyed component2 = totem.GetComponent<DropOnDestroyed>(); if (Object.op_Implicit((Object)(object)component2)) { Object.DestroyImmediate((Object)(object)component2); } GameObject prefab = PrefabManager.Instance.GetPrefab(ItemDropNames.GoblinTotem); Sprite[] array = (Object.op_Implicit((Object)(object)prefab) ? prefab.GetComponent<ItemDrop>() : null)?.m_itemData?.m_shared?.m_icons; if (array != null && array.Length != 0) { totem.GetComponent<Piece>().m_icon = array[0]; } Color val = default(Color); ((Color)(ref val))..ctor(0.2f, 0.9f, 1f, 0.25f); foreach (Transform item in totem.GetComponentsInChildren<Transform>(true).Where(delegate(Transform t) { string name = ((Object)t).name; return (name == "flare" || name == "sparcs (1)") ? true : false; })) { if (Instance.EnableTrace) { Log.Trace(Instance, MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name + " [" + ((Object)item).name + "]"); } if (!((Object)(object)item != (Object)null)) { continue; } ParticleSystem[] componentsInChildren = ((Component)item).GetComponentsInChildren<ParticleSystem>(true); foreach (ParticleSystem obj2 in componentsInChildren) { MainModule main = obj2.main; ((MainModule)(ref main)).startColor = MinMaxGradient.op_Implicit(val); ColorOverLifetimeModule colorOverLifetime = obj2.colorOverLifetime; if (((ColorOverLifetimeModule)(ref colorOverLifetime)).enabled) { MinMaxGradient color = ((ColorOverLifetimeModule)(ref colorOverLifetime)).color; Gradient gradient = ((MinMaxGradient)(ref color)).gradient; Gradient val2 = new Gradient(); val2.SetKeys((GradientColorKey[])(object)new GradientColorKey[2] { new GradientColorKey(val, 0f), new GradientColorKey(val, 1f) }, (GradientAlphaKey[])((gradient != null) ? ((Array)gradient.alphaKeys) : ((Array)new GradientAlphaKey[2] { new GradientAlphaKey(1f, 0f), new GradientAlphaKey(0f, 1f) }))); ((ColorOverLifetimeModule)(ref colorOverLifetime)).color = new MinMaxGradient(val2); } } } Transform val3 = ((IEnumerable<Transform>)totem.GetComponentsInChildren<Transform>(true)).FirstOrDefault((Func<Transform, bool>)((Transform t) => ((Object)t).name == "Totem")); if ((Object)(object)val3 != (Object)null) { MoveChildrenUpAndDisable(val3, new string[2] { "model", "Point light" }); } return totem; } private static void MoveChildrenUpAndDisable(Transform target, IEnumerable<string> skipList) { //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Expected O, but got Unknown try { if (Instance.EnableTrace) { Log.Trace(Instance, MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name); } Transform parent = target.parent; if ((Object)(object)parent == (Object)null) { return; } List<Transform> list = new List<Transform>(); List<string> list2 = skipList.ToList(); foreach (Transform item in target) { Transform val = item; if (!list2.Contains(((Object)val).name)) { list.Add(val); } } foreach (Transform item2 in list) { if (Instance.EnableTrace) { Log.Trace(Instance, MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name + "[" + ((Object)item2).name + "]"); } item2.SetParent(parent, true); } ((Component)target).gameObject.SetActive(false); } catch (Exception e) { Log.Error(Instance, e); } } private void PrefabManager_OnVanillaPrefabsAvailable() { //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Expected O, but got Unknown //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Expected O, but got Unknown //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Expected O, but got Unknown //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Expected O, but got Unknown //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Expected O, but got Unknown try { if (EnableTrace) { Log.Trace(Instance, MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name); } GameObject obj = CreateKitbashedPrefab(); PieceConfig val = new PieceConfig(); val.PieceTable = "Hammer"; val.Name = "$piece_bone_totem_force_field"; val.Description = "$piece_bone_totem_force_field_desc"; val.Usage = new string[3] { "Misc", "Defense", "Furniture" }; val.Requirements = (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig(ItemDropNames.Wood, 10, 0, true), new RequirementConfig(ItemDropNames.BoneFragments, 10, 0, true), new RequirementConfig(ItemDropNames.HardAntler, 1, 0, true) }; CustomPiece val2 = new CustomPiece(obj, true, val); PieceManager.Instance.AddPiece(val2); } catch (Exception e) { Log.Error(Instance, e); } finally { PrefabManager.OnVanillaPrefabsAvailable -= PrefabManager_OnVanillaPrefabsAvailable; } } private void Size_SettingChanged(object sender, EventArgs e) { //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_0256: Unknown result type (might be due to invalid IL or missing references) //IL_023f: Unknown result type (might be due to invalid IL or missing references) //IL_02b9: Unknown result type (might be due to invalid IL or missing references) try { if (EnableTrace) { Log.Trace(Instance, MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name); } GameObject prefab = PrefabManager.Instance.GetPrefab("piece_bone_totem_force_field"); if ((Object)(object)prefab != (Object)null) { Transform val = prefab.transform.Find(PluginConfigSection.ForceField); if ((Object)(object)val != (Object)null) { if (EnableTrace) { Log.Trace(Instance, MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name + " [Updating prefab scale]"); } val.localScale = ForceFieldScale; } } if (!((Object)(object)ZNetScene.instance != (Object)null) || !((Behaviour)ZNetScene.instance).isActiveAndEnabled) { return; } int num = 0; int hash = StringExtensionMethods.GetStableHashCode("piece_bone_totem_force_field"); foreach (ZNetView item in ZNetScene.instance.m_instances.Values.Where(delegate(ZNetView v) { if (Object.op_Implicit((Object)(object)v)) { ZDO zDO = v.GetZDO(); if (zDO == null) { return false; } return zDO.GetPrefab() == hash; } return false; })) { if (EnableTrace) { Log.Trace(Instance, $"{MethodBase.GetCurrentMethod()?.DeclaringType?.Name}.{MethodBase.GetCurrentMethod()?.Name} [{num}:{((Object)item).name}]"); } Transform val2 = ((Component)item).gameObject.transform.Find(PluginConfigSection.ForceField); if ((Object)(object)val2 != (Object)null) { if (EnableTrace) { Log.Trace(Instance, $"{MethodBase.GetCurrentMethod()?.DeclaringType?.Name}.{MethodBase.GetCurrentMethod()?.Name} [{num}:{val2.localScale}]"); } val2.localScale = ForceFieldScale; if (EnableTrace) { Log.Trace(Instance, $"{MethodBase.GetCurrentMethod()?.DeclaringType?.Name}.{MethodBase.GetCurrentMethod()?.Name} [{num}:{val2.localScale}]"); } } num++; } } catch (Exception e2) { Log.Error(Instance, e2); } } } } namespace Digitalroot.Modding.Framework.Logging { internal interface ITraceableLogging { string Source { get; } bool EnableTrace { get; } } internal sealed class Log { private static readonly Dictionary<string, TraceLogger> TraceLoggers; [UsedImplicitly] private static Log Instance { get; } static Log() { TraceLoggers = new Dictionary<string, TraceLogger>(); Instance = new Log(); } private Log() { TraceLoggers.Add("Digitalroot", new TraceLogger("Digitalroot", enableTrace: false)); } public static void RegisterSource(ITraceableLogging sender) { if ((!TraceLoggers.ContainsKey(sender.Source) || TraceLoggers[sender.Source].IsTraceEnabled != sender.EnableTrace) && (!TraceLoggers.ContainsKey(sender.Source) || sender.EnableTrace)) { if (TraceLoggers.ContainsKey(sender.Source) && sender.EnableTrace) { TraceLoggers[sender.Source].EnableTrace(); } else { TraceLoggers.Add(sender.Source, new TraceLogger(sender.Source, sender.EnableTrace)); } } } private static TraceLogger GetTraceLogger(ITraceableLogging sender) { if (!TraceLoggers.ContainsKey(sender.Source)) { return TraceLoggers["Digitalroot"]; } return TraceLoggers[sender.Source]; } [UsedImplicitly] public static void SetEnableTrace(ITraceableLogging sender, bool value) { if (value) { GetTraceLogger(sender).EnableTrace(); } else { GetTraceLogger(sender).DisableTrace(); } } [UsedImplicitly] public static void SetEnableTraceForAllLoggers(bool value) { foreach (TraceLogger value2 in TraceLoggers.Values) { if (value) { value2.EnableTrace(); } else { value2.DisableTrace(); } } } [UsedImplicitly] public static void Debug(ITraceableLogging sender, object value) { GetTraceLogger(sender).LoggerRef.LogDebug(value); } [UsedImplicitly] public static void Error(ITraceableLogging sender, Exception e, int i = 1) { Error(sender, "Message: " + e.Message); Error(sender, $"TargetSite: {e.TargetSite}"); Error(sender, "StackTrace: " + e.StackTrace); Error(sender, "Source: " + e.Source); if (e.Data.Count > 0) { foreach (object key in e.Data.Keys) { Error(sender, $"key: {key}, value: {e.Data[key]}"); } } if (e.InnerException != null) { Error(sender, $"--- InnerException [{i}][Start] ---"); Error(sender, e.InnerException, ++i); } } [UsedImplicitly] public static void Error(ITraceableLogging sender, object value) { GetTraceLogger(sender).LoggerRef.LogError(value); } [UsedImplicitly] public static void Info(ITraceableLogging sender, object value) { GetTraceLogger(sender).LoggerRef.LogInfo(value); } [UsedImplicitly] public static void Fatal(ITraceableLogging sender, Exception e, int i = 1) { Fatal(sender, "Message: " + e.Message); Fatal(sender, $"TargetSite: {e.TargetSite}"); Fatal(sender, "StackTrace: " + e.StackTrace); Fatal(sender, "Source: " + e.Source); if (e.Data.Count > 0) { foreach (object key in e.Data.Keys) { Fatal(sender, $"key: {key}, value: {e.Data[key]}"); } } if (e.InnerException != null) { Fatal(sender, $"--- InnerException [{i}][Start] ---"); Fatal(sender, e.InnerException, ++i); } } [UsedImplicitly] public static void Fatal(ITraceableLogging sender, object value) { GetTraceLogger(sender).LoggerRef.LogFatal(value); } [UsedImplicitly] public static void Message(ITraceableLogging sender, object value) { GetTraceLogger(sender).LoggerRef.LogMessage(value); } [UsedImplicitly] public static void Trace(ITraceableLogging sender, object value) { if (GetTraceLogger(sender).IsTraceEnabled || sender.EnableTrace) { GetTraceLogger(sender).LoggerRef.Log((LogLevel)63, value); } } [UsedImplicitly] public static void Warning(ITraceableLogging sender, object value) { GetTraceLogger(sender).LoggerRef.LogWarning(value); } } internal class TraceLogger { internal readonly ManualLogSource LoggerRef; private readonly string _source; private readonly FileInfo _traceFileInfo; public bool IsTraceEnabled { get; private set; } private DirectoryInfo AssemblyDirectory => new FileInfo(Uri.UnescapeDataString(new UriBuilder(Assembly.GetExecutingAssembly().CodeBase).Path)).Directory; public TraceLogger(string source, bool enableTrace) { _source = source; IsTraceEnabled = enableTrace; LoggerRef = Logger.CreateLogSource(_source); _traceFileInfo = new FileInfo(Path.Combine(Paths.BepInExRootPath ?? AssemblyDirectory.FullName, "logs", _source + ".Trace.log")); if (_traceFileInfo.DirectoryName != null) { Directory.CreateDirectory(_traceFileInfo.DirectoryName); } if (_traceFileInfo.Exists) { _traceFileInfo.Delete(); _traceFileInfo.Refresh(); } LoggerRef.LogEvent += OnLogEvent; } public void EnableTrace() { IsTraceEnabled = true; } public void DisableTrace() { IsTraceEnabled = false; } [UsedImplicitly] public void StopTrace() { LoggerRef.LogEvent -= OnLogEvent; } private void OnLogEvent(object sender, LogEventArgs e) { //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) if (e.Source.SourceName != _source || !IsTraceEnabled) { return; } using Mutex mutex = new Mutex(initiallyOwned: false, "Digitalroot.Modding.Log.TraceLogger." + _source); mutex.WaitOne(); try { if (e.Data is string) { string contents = $"[{e.Level,-7}:{e.Source.SourceName,10}] {e.Data}{Environment.NewLine}"; File.AppendAllText(_traceFileInfo.FullName, contents, Encoding.UTF8); } else { string contents2 = $"[{e.Level,-7}:{e.Source.SourceName,10}] {JsonSerializationProvider.Serialize(e.Data)}{Environment.NewLine}"; File.AppendAllText(_traceFileInfo.FullName, contents2, Encoding.UTF8); } } finally { mutex.ReleaseMutex(); } } } } namespace Digitalroot.Modding.Framework.Common.Json { [UsedImplicitly] internal static class JsonSerializationProvider { public static T Deserialize<T>(string json) { return SimpleJson.DeserializeObject<T>(json, (IJsonSerializerStrategy)(object)new DigitalrootJsonSerializerStrategy()); } public static string Serialize(object obj) { return SimpleJson.SerializeObject(obj, (IJsonSerializerStrategy)(object)new DigitalrootJsonSerializerStrategy()); } } internal class DigitalrootJsonSerializerStrategy : PocoJsonSerializerStrategy { public override bool TrySerializeNonPrimitiveObject(object input, out object output) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) if (!(input is Vector3 val)) { if (input is Quaternion val2) { output = new float[4] { val2.x, val2.y, val2.z, val2.w }; return true; } return ((PocoJsonSerializerStrategy)this).TrySerializeNonPrimitiveObject(input, ref output); } output = new float[3] { val.x, val.y, val.z }; return true; } public override object DeserializeObject(object value, Type type) { //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Unknown result type (might be due to invalid IL or missing references) if (type == null) { throw new ArgumentNullException("type"); } if (value == null) { throw new ArgumentNullException("value"); } if (value is string value2) { if (string.IsNullOrWhiteSpace(value2)) { throw new ArgumentNullException("value"); } if (type == typeof(Vector3)) { if (!(((PocoJsonSerializerStrategy)this).DeserializeObject(value, typeof(float[])) is float[] array) || (array != null && array.Length != 3)) { throw new ArgumentException(string.Format("The value '{0}' can be converted to a {1}.", value, "Vector3"), "value"); } return (object)new Vector3(array[0], array[1], array[2]); } if (type == typeof(Quaternion)) { if (!(((PocoJsonSerializerStrategy)this).DeserializeObject(value, typeof(float[])) is float[] array2) || (array2 != null && array2.Length != 4)) { throw new ArgumentException(string.Format("The value '{0}' can be converted to a {1}.", value, "Quaternion"), "value"); } return (object)new Quaternion(array2[0], array2[1], array2[2], array2[3]); } return ((PocoJsonSerializerStrategy)this).DeserializeObject(value, type); } throw new ArgumentException($"The value '{value}' can be converted to a {type.Name}.", "value"); } } } namespace Digitalroot.Modding.Framework.Names.Vanilla { internal static class ItemDropNames { public static readonly IEnumerable<string> AllNames = ReflectionUtils.AllNames(typeof(ItemDropNames)); public static string Acorn = "Acorn"; public static string Amber = "Amber"; public static string AmberPearl = "AmberPearl"; public static string AncientSkull = "ancient_skull"; public static string AncientSeed = "AncientSeed"; public static string ArmorCarapaceChest = "ArmorCarapaceChest"; public static string ArmorCarapaceLegs = "ArmorCarapaceLegs"; public static string ArmorDress1 = "ArmorDress1"; public static string ArmorDress2 = "ArmorDress2"; public static string ArmorDress3 = "ArmorDress3"; public static string ArmorDress4 = "ArmorDress4"; public static string ArmorDress5 = "ArmorDress5"; public static string ArmorDress6 = "ArmorDress6"; public static string ArmorDress7 = "ArmorDress7"; public static string ArmorDress8 = "ArmorDress8"; public static string ArmorDress9 = "ArmorDress9"; public static string ArmorDress10 = "ArmorDress10"; public static string ArmorFenringChest = "ArmorFenringChest"; public static string ArmorFenringLegs = "ArmorFenringLegs"; public static string ArmorFlametalChest = "ArmorFlametalChest"; public static string ArmorFlametalLegs = "ArmorFlametalLegs"; public static string ArmorHarvester1 = "ArmorHarvester1"; public static string ArmorHarvester2 = "ArmorHarvester2"; public static string ArmorAshlandsMediumChest = "ArmorAshlandsMediumChest"; public static string ArmorAshlandsMediumlegs = "ArmorAshlandsMediumlegs"; public static string ArmorBronzeChest = "ArmorBronzeChest"; public static string ArmorBronzeLegs = "ArmorBronzeLegs"; public static string ArmorIronChest = "ArmorIronChest"; public static string ArmorIronLegs = "ArmorIronLegs"; public static string ArmorMageChest = "ArmorMageChest"; public static string ArmorMageLegs = "ArmorMageLegs"; public static string ArmorMageLegsAshlands = "ArmorMageLegs_Ashlands"; public static string ArmorLeatherChest = "ArmorLeatherChest"; public static string ArmorLeatherLegs = "ArmorLeatherLegs"; public static string ArmorPaddedCuirass = "ArmorPaddedCuirass"; public static string ArmorPaddedGreaves = "ArmorPaddedGreaves"; public static string ArmorRagsChest = "ArmorRagsChest"; public static string ArmorRagsLegs = "ArmorRagsLegs"; public static string ArmorRootChest = "ArmorRootChest"; public static string ArmorRootLegs = "ArmorRootLegs"; public static string ArmorTrollLeatherChest = "ArmorTrollLeatherChest"; public static string ArmorTrollLeatherLegs = "ArmorTrollLeatherLegs"; public static string ArmorTunic1 = "ArmorTunic1"; public static string ArmorTunic2 = "ArmorTunic2"; public static string ArmorTunic3 = "ArmorTunic3"; public static string ArmorTunic4 = "ArmorTunic4"; public static string ArmorTunic5 = "ArmorTunic5"; public static string ArmorTunic6 = "ArmorTunic6"; public static string ArmorTunic7 = "ArmorTunic7"; public static string ArmorTunic8 = "ArmorTunic8"; public static string ArmorTunic9 = "ArmorTunic9"; public static string ArmorTunic10 = "ArmorTunic10"; public static string ArmorWolfChest = "ArmorWolfChest"; public static string ArmorWolfLegs = "ArmorWolfLegs"; public static string ArrowBronze = "ArrowBronze"; public static string ArrowCarapace = "ArrowCarapace"; public static string ArrowCharred = "ArrowCharred"; public static string ArrowFire = "ArrowFire"; public static string ArrowFlint = "ArrowFlint"; public static string ArrowFrost = "ArrowFrost"; public static string ArrowIron = "ArrowIron"; public static string ArrowNeedle = "ArrowNeedle"; public static string ArrowObsidian = "ArrowObsidian"; public static string ArrowPoison = "ArrowPoison"; public static string ArrowSilver = "ArrowSilver"; public static string ArrowWood = "ArrowWood"; public static string AsksvinEgg = "AsksvinEgg"; public static string AsksvinMeat = "AsksvinMeat"; public static string AtgeirBlackmetal = "AtgeirBlackmetal"; public static string AtgeirBronze = "AtgeirBronze"; public static string AtgeirHimminAfl = "AtgeirHimminAfl"; public static string AtgeirIron = "AtgeirIron"; public static string AtgeirWood = "AtgeirWood"; public static string AxeBlackMetal = "AxeBlackMetal"; public static string AxeBronze = "AxeBronze"; public static string AxeEarly = "AxeEarly"; public static string AxeFlint = "AxeFlint"; public static string AxeIron = "AxeIron"; public static string AxeJotunBane = "AxeJotunBane"; public static string AxeStone = "AxeStone"; public static string AxeWood = "AxeWood"; public static string BarberKit = "BarberKit"; public static string Barley = "Barley"; public static string BarleyFlour = "BarleyFlour"; public static string BarleyWine = "BarleyWine"; public static string BarleyWineBase = "BarleyWineBase"; public static string BarrelRings = "BarrelRings"; public static string Battleaxe = "Battleaxe"; public static string BattleaxeCrystal = "BattleaxeCrystal"; public static string BeechSeeds = "BeechSeeds"; public static string Bell = "Bell"; public static string BeltStrength = "BeltStrength"; public static string Bilebag = "Bilebag"; public static string BirchSeeds = "BirchSeeds"; public static string BjornHide = "BjornHide"; public static string BjornMeat = "BjornMeat"; public static string BjornPaw = "BjornPaw"; public static string BlackCore = "BlackCore"; public static string BlackMarble = "BlackMarble"; public static string BlackMetal = "BlackMetal"; public static string BlackMetalScrap = "BlackMetalScrap"; public static string BlackSoup = "BlackSoup"; public static string Blackwood = "Blackwood"; public static string Bloodbag = "Bloodbag"; public static string BloodPudding = "BloodPudding"; public static string Blueberries = "Blueberries"; public static string BoarJerky = "BoarJerky"; public static string BoltBlackmetal = "BoltBlackmetal"; public static string BoltBone = "BoltBone"; public static string BoltCarapace = "BoltCarapace"; public static string BoltCharred = "BoltCharred"; public static string BoltIron = "BoltIron"; public static string BombBile = "BombBile"; public static string BombLava = "BombLava"; public static string BombOoze = "BombOoze"; public static string BombSiege = "BombSiege"; public static string BombSmoke = "BombSmoke"; public static string BoneFragments = "BoneFragments"; public static string BoneMawSerpentMeat = "BoneMawSerpentMeat"; public static string BonemawSerpentScale = "BonemawSerpentScale"; public static string BonemawSerpentTooth = "BonemawSerpentTooth"; public static string Bow = "Bow"; public static string BowAshlands = "BowAshlands"; public static string BowAshlandsBlood = "BowAshlandsBlood"; public static string BowAshlandsRoot = "BowAshlandsRoot"; public static string BowAshlandsStorm = "BowAshlandsStorm"; public static string BowDraugrFang = "BowDraugrFang"; public static string BowFineWood = "BowFineWood"; public static string BowHuntsman = "BowHuntsman"; public static string BowSpineSnap = "BowSpineSnap"; public static string Bread = "Bread"; public static string BreadDough = "BreadDough"; public static string Bronze = "Bronze"; public static string BronzeNails = "BronzeNails"; public static string BronzeScrap = "BronzeScrap"; public static string BugMeat = "BugMeat"; public static string CandleWick = "CandleWick"; public static string CapeAsh = "CapeAsh"; public static string CapeAsksvin = "CapeAsksvin"; public static string CapeDeerHide = "CapeDeerHide"; public static string CapeFeather = "CapeFeather"; public static string CapeLinen = "CapeLinen"; public static string CapeLox = "CapeLox"; public static string CapeOdin = "CapeOdin"; public static string CapeTest = "CapeTest"; public static string CapeTrollHide = "CapeTrollHide"; public static string CapeWolf = "CapeWolf"; public static string Carapace = "Carapace"; public static string Carrot = "Carrot"; public static string CarrotSeeds = "CarrotSeeds"; public static string CarrotSoup = "CarrotSoup"; public static string CelestialFeather = "CelestialFeather"; public static string CeramicPlate = "CeramicPlate"; public static string Chain = "Chain"; public static string CharcoalResin = "CharcoalResin"; public static string CharredBone = "CharredBone"; public static string CharredCogwheel = "CharredCogwheel"; public static string CharredBreastplate = "Charred_Breastplate"; public static string CharredHelmet = "Charred_Helmet"; public static string CharredHipCloth = "Charred_HipCloth"; public static string CharredMageCloths = "Charred_MageCloths"; public static string ChestHildir1 = "chest_hildir1"; public static string ChestHildir2 = "chest_hildir2"; public static string ChestHildir3 = "chest_hildir3"; public static string Chicken = "Chicken"; public static string ChickenEgg = "ChickenEgg"; public static string ChickenMeat = "ChickenMeat"; public static string Chitin = "Chitin"; public static string Cinder = "Cinder"; public static string Cloudberry = "Cloudberry"; public static string Club = "Club"; public static string Coal = "Coal"; public static string Coins = "Coins"; public static string CookedAsksvinMeat = "CookedAsksvinMeat"; public static string CookedBoneMawSerpentMeat = "CookedBoneMawSerpentMeat"; public static string CookedBugMeat = "CookedBugMeat"; public static string CookedChickenMeat = "CookedChickenMeat"; public static string CookedDeerMeat = "CookedDeerMeat"; public static string CookedEgg = "CookedEgg"; public static string CookedHareMeat = "CookedHareMeat"; public static string CookedLoxMeat = "CookedLoxMeat"; public static string CookedWolfMeat = "CookedWolfMeat"; public static string CookedMeat = "CookedMeat"; public static string CookedVoltureMeat = "CookedVoltureMeat"; public static string Copper = "Copper"; public static string CopperOre = "CopperOre"; public static string CopperScrap = "CopperScrap"; public static string CrossbowArbalest = "CrossbowArbalest"; public static string CryptKey = "CryptKey"; public static string Crystal = "Crystal"; public static string Cultivator = "Cultivator"; public static string CuredSquirrelHamstring = "CuredSquirrelHamstring"; public static string Dandelion = "Dandelion"; public static string DeerHide = "DeerHide"; public static string DeerMeat = "DeerMeat"; public static string DeerStew = "DeerStew"; public static string Demister = "Demister"; public static string DragonEgg = "DragonEgg"; public static string DragonTear = "DragonTear"; public static string DvergrKey = "DvergrKey"; public static string DvergrKeyFragment = "DvergrKeyFragment"; public static string DvergrNeedle = "DvergrNeedle"; public static string DvergerStaffFire = "DvergerStaffFire"; public static string DvergerStaffHeal = "DvergerStaffHeal"; public static string DvergerStaffIce = "DvergerStaffIce"; public static string DvergerStaffSupport = "DvergerStaffSupport"; public static string DvergerSuitArbalest = "DvergerSuitArbalest"; public static string DvergerSuitArbalestAshlands = "DvergerSuitArbalest_Ashlands"; public static string DvergerSuitFire = "DvergerSuitFire"; public static string DvergerSuitIce = "DvergerSuitIce"; public static string DvergerSuitSupport = "DvergerSuitSupport"; public static string DyrnwynBladeFragment = "DyrnwynBladeFragment"; public static string DyrnwynHiltFragment = "DyrnwynHiltFragment"; public static string DyrnwynTipFragment = "DyrnwynTipFragment"; public static string Eitr = "Eitr"; public static string Eikthyrnir = "Eikthyrnir"; public static string ElderBark = "ElderBark"; public static string Entrails = "Entrails"; public static string Eyescream = "Eyescream"; public static string FaderDrop = "FaderDrop"; public static string FeastAshlandsMaterial = "FeastAshlands_Material"; public static string FeastBlackforestMaterial = "FeastBlackforest_Material"; public static string Feaster = "Feaster"; public static string FeastMeadowsMaterial = "FeastMeadows_Material"; public static string FeastMistlandsMaterial = "FeastMistlands_Material"; public static string FeastMountainsMaterial = "FeastMountains_Material"; public static string FeastOceansMaterial = "FeastOceans_Material"; public static string FeastPlainsMaterial = "FeastPlains_Material"; public static string FeastSwampsMaterial = "FeastSwamps_Material"; public static string Feathers = "Feathers"; public static string FineWood = "FineWood"; public static string FirCone = "FirCone"; public static string FishAndBread = "FishAndBread"; public static string FishAndBreadUncooked = "FishAndBreadUncooked"; public static string FishAnglerRaw = "FishAnglerRaw"; public static string FishCooked = "FishCooked"; public static string FishingBait = "FishingBait"; public static string FishingBaitAshlands = "FishingBaitAshlands"; public static string FishingBaitCave = "FishingBaitCave"; public static string FishingBaitDeepNorth = "FishingBaitDeepNorth"; public static string FishingBaitForest = "FishingBaitForest"; public static string FishingBaitMistlands = "FishingBaitMistlands"; public static string FishingBaitOcean = "FishingBaitOcean"; public static string FishingBaitPlains = "FishingBaitPlains"; public static string FishingBaitSwamp = "FishingBaitSwamp"; public static string FishingRod = "FishingRod"; public static string FishRaw = "FishRaw"; public static string FishWraps = "FishWraps"; public static string FistFenrirClaw = "FistFenrirClaw"; public static string Flametal = "Flametal"; public static string FlametalNew = "FlametalNew"; public static string FlametalOre = "FlametalOre"; public static string FlametalOreNew = "FlametalOreNew"; public static string Flax = "Flax"; public static string Flint = "Flint"; public static string FragrantBundle = "FragrantBundle"; public static string FreezeGland = "FreezeGland"; public static string FreshSeaweed = "FreshSeaweed"; public static string GemstoneBlue = "GemstoneBlue"; public static string GemstoneGreen = "GemstoneGreen"; public static string GemstoneRed = "GemstoneRed"; public static string GiantBloodSack = "GiantBloodSack"; public static string GlowingMushroom = "GlowingMushroom"; public static string GoblinGem = "Goblin_Gem"; public static string GoblinTotem = "GoblinTotem"; public static string Grausten = "Grausten"; public static string GreydwarfEye = "GreydwarfEye"; public static string Guck = "Guck"; public static string Hammer = "Hammer"; public static string HareMeat = "HareMeat"; public static string HardAntler = "HardAntler"; public static string HelmetAshlandsMediumHood = "HelmetAshlandsMediumHood"; public static string HelmetBronze = "HelmetBronze"; public static string HelmetCarapace = "HelmetCarapace"; public static string HelmetDrake = "HelmetDrake"; public static string HelmetDverger = "HelmetDverger"; public static string HelmetFenring = "HelmetFenring"; public static string HelmetFishingHat = "HelmetFishingHat"; public static string HelmetFlametal = "HelmetFlametal"; public static string HelmetHat1 = "HelmetHat1"; public static string HelmetHat2 = "HelmetHat2"; public static string HelmetHat3 = "HelmetHat3"; public static string HelmetHat4 = "HelmetHat4"; public static string HelmetHat5 = "HelmetHat5"; public static string HelmetHat6 = "HelmetHat6"; public static string HelmetHat7 = "HelmetHat7"; public static string HelmetHat8 = "HelmetHat8"; public static string HelmetHat9 = "HelmetHat9"; public static string HelmetHat10 = "HelmetHat10"; public static string HelmetIron = "HelmetIron"; public static string HelmetLeather = "HelmetLeather"; public static string HelmetMage = "HelmetMage"; public static string HelmetMageAshlands = "HelmetMage_Ashlands"; public static string HelmetMidsummerCrown = "HelmetMidsummerCrown"; public static string HelmetOdin = "HelmetOdin"; public static string HelmetPadded = "HelmetPadded"; public static string HelmetPointyHat = "HelmetPointyHat"; public static string HelmetRoot = "HelmetRoot"; public static string HelmetTrollLeather = "HelmetTrollLeather"; public static string HelmetYule = "HelmetYule"; public static string Hoe = "Hoe"; public static string Honey = "Honey"; public static string HoneyGlazedChicken = "HoneyGlazedChicken"; public static string HoneyGlazedChickenUncooked = "HoneyGlazedChickenUncooked"; public static string Iron = "Iron"; public static string IronNails = "IronNails"; public static string IronOre = "IronOre"; public static string IronScrap = "IronScrap"; public static string JuteBlue = "JuteBlue"; public static string JuteRed = "JuteRed"; public static string KnifeBlackMetal = "KnifeBlackMetal"; public static string KnifeButcher = "KnifeButcher"; public static string KnifeChitin = "KnifeChitin"; public static string KnifeCopper = "KnifeCopper"; public static string KnifeFlint = "KnifeFlint"; public static string KnifeSilver = "KnifeSilver"; public static string KnifeSkollAndHati = "KnifeSkollAndHati"; public static string Lantern = "Lantern"; public static string Larva = "Larva"; public static string LavaRock = "LavaRock"; public static string LeatherScraps = "LeatherScraps"; public static string LinenThread = "LinenThread"; public static string LoxMeat = "LoxMeat"; public static string LoxPelt = "LoxPelt"; public static string LoxPie = "LoxPie"; public static string LoxPieUncooked = "LoxPieUncooked"; public static string LuredWisp = "LuredWisp"; public static string MaceBronze = "MaceBronze"; public static string MaceEldner = "MaceEldner"; public static string MaceEldnerBlood = "MaceEldnerBlood"; public static string MaceEldnerLightning = "MaceEldnerLightning"; public static string MaceEldnerNature = "MaceEldnerNature"; public static string MaceIron = "MaceIron"; public static string MaceNeedle = "MaceNeedle"; public static string MaceSilver = "MaceSilver"; public static string MagicallyStuffedShroom = "MagicallyStuffedShroom"; public static string MagicallyStuffedShroomUncooked = "MagicallyStuffedShroomUncooked"; public static string Mandible = "Mandible"; public static string MarinatedGreens = "MarinatedGreens"; public static string MashedMeat = "MashedMeat"; public static string MeadBaseBugRepellent = "MeadBaseBugRepellent"; public static string MeadBaseBzerker = "MeadBaseBzerker"; public static string MeadBaseEitrLingering = "MeadBaseEitrLingering"; public static string MeadBaseEitrMinor = "MeadBaseEitrMinor"; public static string MeadBaseFrostResist = "MeadBaseFrostResist"; public static string MeadBaseHasty = "MeadBaseHasty"; public static string MeadBaseHealthLingering = "MeadBaseHealthLingering"; public static string MeadBaseHealthMajor = "MeadBaseHealthMajor"; public static string MeadBaseHealthMedium = "MeadBaseHealthMedium"; public static string MeadBaseHealthMinor = "MeadBaseHealthMinor"; public static string MeadBaseLightFoot = "MeadBaseLightFoot"; public static string MeadBasePoisonResist = "MeadBasePoisonResist"; public static string MeadBaseStaminaLingering = "MeadBaseStaminaLingering"; public static string MeadBaseStaminaMedium = "MeadBaseStaminaMedium"; public static string MeadBaseStaminaMinor = "MeadBaseStaminaMinor"; public static string MeadBaseStrength = "MeadBaseStrength"; public static string MeadBaseSwimmer = "MeadBaseSwimmer"; public static string MeadBaseTamer = "MeadBaseTamer"; public static string MeadBaseTasty = "MeadBaseTasty"; public static string MeadBugRepellent = "MeadBugRepellent"; public static string MeadBzerker = "MeadBzerker"; public static string MeadEitrLingering = "MeadEitrLingering"; public static string MeadEitrMinor = "MeadEitrMinor"; public static string MeadFrostResist = "MeadFrostResist"; public static string MeadHasty = "MeadHasty"; public static string MeadHealthLingering = "MeadHealthLingering"; public static string MeadHealthMajor = "MeadHealthMajor"; public static string MeadHealthMedium = "MeadHealthMedium"; public static string MeadHealthMinor = "MeadHealthMinor"; public static string MeadLightfoot = "MeadLightfoot"; public static string MeadPoisonResist = "MeadPoisonResist"; public static string MeadStaminaLingering = "MeadStaminaLingering"; public static string MeadStaminaMedium = "MeadStaminaMedium"; public static string MeadStaminaMinor = "MeadStaminaMinor"; public static string MeadTasty = "MeadTasty"; public static string MeadTrollPheromones = "MeadTrollPheromones"; public static string MeatPlatter = "MeatPlatter"; public static string MeatPlatterUncooked = "MeatPlatterUncooked"; public static string MechanicalSpring = "MechanicalSpring"; public static string MinceMeatSauce = "MinceMeatSauce"; public static string MisthareSupreme = "MisthareSupreme"; public static string MisthareSupremeUncooked = "MisthareSupremeUncooked"; public static string MistileKamikaze = "Mistile_kamikaze"; public static string MoltenCore = "MoltenCore"; public static string MorgenHeart = "MorgenHeart"; public static string Mushroom = "Mushroom"; public static string MushroomBlue = "MushroomBlue"; public static string MushroomBzerker = "MushroomBzerker"; public static string MushroomJotunPuffs = "MushroomJotunPuffs"; public static string MushroomMagecap = "MushroomMagecap"; public static string MushroomOmelette = "MushroomOmelette"; public static string MushroomSmokePuff = "MushroomSmokePuff"; public static string MushroomYellow = "MushroomYellow"; public static string NeckTail = "NeckTail"; public static string NeckTailGrilled = "NeckTailGrilled"; public static string Needle = "Needle"; public static string Obsidian = "Obsidian"; public static string Onion = "Onion"; public static string OnionSeeds = "OnionSeeds"; public static string OnionSoup = "OnionSoup"; public static string Ooze = "Ooze"; public static string PickaxeAntler = "PickaxeAntler"; public static string PickaxeBlackMetal = "PickaxeBlackMetal"; public static string PickaxeBronze = "PickaxeBronze"; public static string PickaxeIron = "PickaxeIron"; public static string PickaxeStone = "PickaxeStone"; public static string PineCone = "PineCone"; public static string PiquantPie = "PiquantPie"; public static string PiquantPieUncooked = "PiquantPieUncooked"; public static string PlaceofMystery1 = "PlaceofMystery1"; public static string PlaceofMystery2 = "PlaceofMystery2"; public static string PlaceofMystery3 = "PlaceofMystery3"; public static string PotShardGreen = "Pot_Shard_Green"; public static string PotShardRed = "Pot_Shard_Red"; public static string PowderedDragonEgg = "PowderedDragonEgg"; public static string ProustitePowder = "ProustitePowder"; public static string PukeBerries = "Pukeberries"; public static string PungentPebbles = "PungentPebbles"; public static string QueenBee = "QueenBee"; public static string QueenDrop = "QueenDrop"; public static string QueensJam = "QueensJam"; public static string Raspberry = "Raspberry"; public static string RawMeat = "RawMeat"; public static string Resin = "Resin"; public static string RoastedCrustPie = "RoastedCrustPie"; public static string RoastedCrustPieUncooked = "RoastedCrustPieUncooked"; public static string RoundLog = "RoundLog"; public static string RottenMeat = "RottenMeat"; public static string RoyalJelly = "RoyalJelly"; public static string Ruby = "Ruby"; public static string SaddleLox = "SaddleLox"; public static string Salad = "Salad"; public static string Sap = "Sap"; public static string Sausages = "Sausages"; public static string ScaleHide = "ScaleHide"; public static string ScorchingMedley = "ScorchingMedley"; public static string Scythe = "Scythe"; public static string ScytheHandle = "ScytheHandle"; public static string SerpentMeat = "SerpentMeat"; public static string SerpentMeatCooked = "SerpentMeatCooked"; public static string SerpentScale = "SerpentScale"; public static string SerpentStew = "SerpentStew"; public static string SharpeningStone = "SharpeningStone"; public static string ShieldBanded = "ShieldBanded"; public static string ShieldBlackmetal = "ShieldBlackmetal"; public static string ShieldBlackmetalTower = "ShieldBlackmetalTower"; public static string ShieldBoneTower = "ShieldBoneTower"; public static string ShieldBronzeBuckler = "ShieldBronzeBuckler"; public static string ShieldCarapace = "ShieldCarapace"; public static string ShieldCarapaceBuckler = "ShieldCarapaceBuckler"; public static string ShieldCore = "ShieldCore"; public static string ShieldFlametal = "ShieldFlametal"; public static string ShieldFlametalTower = "ShieldFlametalTower"; public static string ShieldIronBuckler = "ShieldIronBuckler"; public static string ShieldIronSquare = "ShieldIronSquare"; public static string ShieldIronTower = "ShieldIronTower"; public static string ShieldKnight = "ShieldKnight"; public static string ShieldSerpentscale = "ShieldSerpentscale"; public static string ShieldSilver = "ShieldSilver"; public static string ShieldWood = "ShieldWood"; public static string ShieldWoodTower = "ShieldWoodTower"; public static string ShocklateSmoothie = "ShocklateSmoothie"; public static string Silver = "Silver"; public static string SilverNecklace = "SilverNecklace"; public static string SilverOre = "SilverOre"; public static string SizzlingBerryBroth = "SizzlingBerryBroth"; public static string SledgeCheat = "SledgeCheat"; public static string SledgeDemolisher = "SledgeDemolisher"; public static string SledgeIron = "SledgeIron"; public static string SledgeStagbreaker = "SledgeStagbreaker"; public static string Softtissue = "Softtissue"; public static string SpearBronze = "SpearBronze"; public static string SpearCarapace = "SpearCarapace"; public static string SpearChitin = "SpearChitin"; public static string SpearElderbark = "SpearElderbark"; public static string SpearFlint = "SpearFlint"; public static string SpearSplitner = "SpearSplitner"; public static string SpearSplitnerBlood = "SpearSplitner_Blood"; public static string SpearSplitnerLightning = "SpearSplitner_Lightning"; public static string SpearSplitnerNature = "SpearSplitner_Nature"; public static string SpearWolfFang = "SpearWolfFang"; public static string SpiceAshlands = "SpiceAshlands"; public static string SpiceForests = "SpiceForests"; public static string SpiceMistlands = "SpiceMistlands"; public static string SpiceMountains = "SpiceMountains"; public static string SpiceOceans = "SpiceOceans"; public static string SpicePlains = "SpicePlains"; public static string SpicyMarmalade = "SpicyMarmalade"; public static string StaffClusterbomb = "StaffClusterbomb"; public static string StaffFireball = "StaffFireball"; public static string StaffGreenRoots = "StaffGreenRoots"; public static string StaffIceShards = "StaffIceShards"; public static string StaffLightning = "StaffLightning"; public static string StaffRedTroll = "StaffRedTroll"; public static string StaffShield = "StaffShield"; public static string StaffSkeleton = "StaffSkeleton"; public static string StaminaUpgradeGreydwarf = "StaminaUpgrade_Greydwarf"; public static string StaminaUpgradeTroll = "StaminaUpgrade_Troll"; public static string StaminaUpgradeWraith = "StaminaUpgrade_Wraith"; public static string Stone = "Stone"; public static string SurtlingCore = "SurtlingCore"; public static string SwordBlackmetal = "SwordBlackmetal"; public static string SwordBronze = "SwordBronze"; public static string SwordCheat = "SwordCheat"; public static string SwordDyrnwyn = "SwordDyrnwyn"; public static string SwordIron = "SwordIron"; public static string SwordIronFire = "SwordIronFire"; public static string SwordMistwalker = "SwordMistwalker"; public static string SwordNiedhogg = "SwordNiedhogg"; public static string SwordNiedhoggBlood = "SwordNiedhoggBlood"; public static string SwordNiedhoggLightning = "SwordNiedhoggLightning"; public static string SwordNiedhoggNature = "SwordNiedhoggNature"; public static string SwordSilver = "SwordSilver"; public static string Tankard = "Tankard"; public static string TankardDvergr = "Tankard_dvergr"; public static string TankardAnniversary = "TankardAnniversary"; public static string TankardOdin = "TankardOdin"; public static string Tar = "Tar"; public static string TarLiquid = "TarLiquid"; public static string ThSwordKrom = "THSwordKrom"; public static string ThSwordSlayer = "THSwordSlayer"; public static string ThSwordSlayerBlood = "THSwordSlayerBlood"; public static string ThSwordSlayerLightning = "THSwordSlayerLightning"; public static string ThSwordSlayerNature = "THSwordSlayerNature"; public static string Thistle = "Thistle"; public static string Thunderstone = "Thunderstone"; public static string Tin = "Tin"; public static string TinOre = "TinOre"; public static string TolrokoFlyer = "tolroko_flyer"; public static string Torch = "Torch"; public static string TorchMist = "TorchMist"; public static string TreasurePile = "treasure_pile"; public static string TreasureStack = "treasure_stack"; public static string TrollHide = "TrollHide"; public static string TrophyAbomination = "TrophyAbomination"; public static string TrophyAsksvin = "TrophyAsksvin"; public static string TrophyBlob = "TrophyBlob"; public static string TrophyBoar = "TrophyBoar"; public static string TrophyBonemass = "TrophyBonemass"; public static string TrophyBonemawSerpent = "TrophyBonemawSerpent"; public static string TrophyCharredArcher = "TrophyCharredArcher"; public static string TrophyCharredMage = "TrophyCharredMage"; public static string TrophyCharredMelee = "TrophyCharredMelee"; public static string TrophyCultist = "TrophyCultist"; public static string TrophyCultistHildir = "TrophyCultist_Hildir"; public static string TrophyDeathsquito = "TrophyDeathsquito"; public static string TrophyDeer = "TrophyDeer"; public static string TrophyDragonQueen = "TrophyDragonQueen"; public static string TrophyDraugr = "TrophyDraugr"; public static string TrophyDraugrElite = "TrophyDraugrElite"; public static string TrophyDraugrFem = "TrophyDraugrFem"; public static string TrophyDvergr = "TrophyDvergr"; public static string TrophyEikthyr = "TrophyEikthyr"; public static string TrophyFader = "TrophyFader"; public static string TrophyFallenValkyrie = "TrophyFallenValkyrie"; public static string TrophyFenring = "TrophyFenring"; public static string TrophyForestTroll = "TrophyForestTroll"; public static string TrophyFrostTroll = "TrophyFrostTroll"; public static string TrophyGjall = "TrophyGjall"; public static string TrophyGoblin = "TrophyGoblin"; public static string TrophyGoblinBrute = "TrophyGoblinBrute"; public static string TrophyGoblinBruteBrosBrute = "TrophyGoblinBruteBrosBrute"; public static string TrophyGoblinBruteBrosShaman = "TrophyGoblinBruteBrosShaman"; public static string TrophyGoblinKing = "TrophyGoblinKing"; public static string TrophyGoblinShaman = "TrophyGoblinShaman"; public static string TrophyGreydwarf = "TrophyGreydwarf"; public static string TrophyGreydwarfBrute = "TrophyGreydwarfBrute"; public static string TrophyGreydwarfShaman = "TrophyGreydwarfShaman"; public static string TrophyGrowth = "TrophyGrowth"; public static string TrophyHare = "TrophyHare"; public static string TrophyHatchling = "TrophyHatchling"; public static string TrophyKvastur = "TrophyKvastur"; public static string TrophyLeech = "TrophyLeech"; public static string TrophyLox = "TrophyLox"; public static string TrophyMorgen = "TrophyMorgen"; public static string TrophyNeck = "TrophyNeck"; public static string TrophySeeker = "TrophySeeker"; public static string TrophySeekerBrute = "TrophySeekerBrute"; public static string TrophySeekerQueen = "TrophySeekerQueen"; public static string TrophySerpent = "TrophySerpent"; public static string TrophySGolem = "TrophySGolem"; public static string TrophySkeleton = "TrophySkeleton"; public static string TrophySkeletonHildir = "TrophySkeletonHildir"; public static string TrophySkeletonPoison = "TrophySkeletonPoison"; public static string TrophySurtling = "TrophySurtling"; public static string TrophyTheElder = "TrophyTheElder"; public static string TrophyTick = "TrophyTick"; public static string TrophyUlv = "TrophyUlv"; public static string TrophyVolture = "TrophyVolture"; public static string TrophyWolf = "TrophyWolf"; public static string TrophyWraith = "TrophyWraith"; public static string Turnip = "Turnip"; public static string TurnipSeeds = "TurnipSeeds"; public static string TurnipStew = "TurnipStew"; public static string TurretBolt = "TurretBolt"; public static string TurretBoltBone = "TurretBoltBone"; public static string TurretBoltFlametal = "TurretBoltFlametal"; public static string TurretBoltWood = "TurretBoltWood"; public static string VegvisirShardBonemass = "VegvisirShard_Bonemass"; public static string VineAsh = "VineAsh"; public static string Vineberry = "Vineberry"; public static string VineberrySeeds = "VineberrySeeds"; public static string VoltureEgg = "VoltureEgg"; public static string VoltureMeat = "VoltureMeat"; public static string VoltureNest = "VoltureNest"; public static string WaterLiquid = "WaterLiquid"; public static string Wishbone = "Wishbone"; public static string Wisp = "Wisp"; public static string WitheredBone = "WitheredBone"; public static string WolfClaw = "WolfClaw"; public static string WolfHairBundle = "WolfHairBundle"; public static string WolfFang = "WolfFang"; public static string WolfJerky = "WolfJerky"; public static string WolfMeat = "WolfMeat"; public static string WolfMeatSkewer = "WolfMeatSkewer"; public static string WolfPelt = "WolfPelt"; public static string Wood = "Wood"; public static string YagluthDrop = "YagluthDrop"; public static string YggdrasilPorridge = "YggdrasilPorridge"; public static string YggdrasilRoot = "YggdrasilRoot"; public static string YggdrasilWood = "YggdrasilWood"; public static string YmirRemains = "YmirRemains"; } } namespace Digitalroot.Modding.Framework.Utils { internal static class ReflectionUtils { [UsedImplicitly] public static List<T> AllOf<T>() { return Enum.GetValues(typeof(T)).OfType<T>().ToList(); } [UsedImplicitly] public static IEnumerable<string> AllNames(Type type) { foreach (FieldInfo item in from f1 in type.GetFields() where f1.FieldType == typeof(string) select f1) { yield return item.GetValue(null).ToString(); } } [UsedImplicitly] public static T GetPrivateField<T>(object instance, string name) { FieldInfo field = instance.GetType().GetField(name, BindingFlags.Instance | BindingFlags.NonPublic); if (field != null) { return (T)field.GetValue(instance); } Log.Error(StaticSourceLogger.PreMadeTraceableInstance, $"Variable {name} does not exist on type: {instance.GetType()}"); return default(T); } [UsedImplicitly] public static object InvokePrivate(object instance, string name, object[] args = null) { MethodInfo method = instance.GetType().GetMethod(name, BindingFlags.Instance | BindingFlags.NonPublic); if (method == null) { Type[] types = ((args == null) ? Type.EmptyTypes : args.Select((object arg) => arg.GetType()).ToArray()); method = instance.GetType().GetMethod(name, types); } if (method == null) { Log.Error(StaticSourceLogger.PreMadeTraceableInstance, $"Method {name} does not exist on type: {instance.GetType()}"); return null; } return method.Invoke(instance, args); } [UsedImplicitly] public static void SetPrivateField(object instance, string name, object value) { FieldInfo field = instance.GetType().GetField(name, BindingFlags.Instance | BindingFlags.NonPublic); if (field == null) { Log.Error(StaticSourceLogger.PreMadeTraceableInstance, $"Variable {name} does not exist on type: {instance.GetType()}"); } else { field.SetValue(instance, value); } } } } namespace Digitalroot.Modding.Framework.Logging { [DebuggerDisplay("Source = {Source}, EnableTrace = {EnableTrace}", Name = "{Source}")] internal class StaticSourceLogger : ITraceableLogging { public static readonly StaticSourceLogger PreMadeTraceableInstance = new StaticSourceLogger(enableTrace: true); public static StaticSourceLogger PreMadeNonTraceableInstance = new StaticSourceLogger(); public string Source { get; } public bool EnableTrace { get; } public StaticSourceLogger(bool enableTrace = false) : this("Digitalroot", enableTrace) { } public StaticSourceLogger(string source, bool enableTrace = false) { Source = source; EnableTrace = enableTrace; } } } internal class DigitalrootValheimEternalForceField_ProcessedByFody { internal const string FodyVersion = "6.6.0.0"; internal const string ILMerge = "1.22.0.0"; }