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 WitherholdKeep v1.0.0
WitherholdKeep.dll
Decompiled a year agousing System; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using REPOLib.Modules; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: IgnoresAccessChecksTo("Assembly-CSharp-firstpass")] [assembly: IgnoresAccessChecksTo("Assembly-CSharp")] [assembly: IgnoresAccessChecksTo("Autodesk.Fbx")] [assembly: IgnoresAccessChecksTo("Facepunch.Steamworks.Win64")] [assembly: IgnoresAccessChecksTo("FbxBuildTestAssets")] [assembly: IgnoresAccessChecksTo("Klattersynth")] [assembly: IgnoresAccessChecksTo("Photon3Unity3D")] [assembly: IgnoresAccessChecksTo("PhotonChat")] [assembly: IgnoresAccessChecksTo("PhotonRealtime")] [assembly: IgnoresAccessChecksTo("PhotonUnityNetworking")] [assembly: IgnoresAccessChecksTo("PhotonUnityNetworking.Utilities")] [assembly: IgnoresAccessChecksTo("PhotonVoice.API")] [assembly: IgnoresAccessChecksTo("PhotonVoice")] [assembly: IgnoresAccessChecksTo("PhotonVoice.PUN")] [assembly: IgnoresAccessChecksTo("SingularityGroup.HotReload.Runtime")] [assembly: IgnoresAccessChecksTo("SingularityGroup.HotReload.Runtime.Public")] [assembly: IgnoresAccessChecksTo("Sirenix.OdinInspector.Attributes")] [assembly: IgnoresAccessChecksTo("Sirenix.Serialization.Config")] [assembly: IgnoresAccessChecksTo("Sirenix.Serialization")] [assembly: IgnoresAccessChecksTo("Sirenix.Utilities")] [assembly: IgnoresAccessChecksTo("Unity.AI.Navigation")] [assembly: IgnoresAccessChecksTo("Unity.Formats.Fbx.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.InputSystem")] [assembly: IgnoresAccessChecksTo("Unity.InputSystem.ForUI")] [assembly: IgnoresAccessChecksTo("Unity.Postprocessing.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.ShaderLibrary")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary")] [assembly: IgnoresAccessChecksTo("Unity.TextMeshPro")] [assembly: IgnoresAccessChecksTo("Unity.Timeline")] [assembly: IgnoresAccessChecksTo("Unity.VisualScripting.Antlr3.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.VisualScripting.Core")] [assembly: IgnoresAccessChecksTo("Unity.VisualScripting.Flow")] [assembly: IgnoresAccessChecksTo("Unity.VisualScripting.State")] [assembly: IgnoresAccessChecksTo("UnityEngine.ARModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.NVIDIAModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.UI")] [assembly: IgnoresAccessChecksTo("websocket-sharp")] [assembly: AssemblyCompany("DirtyGames")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("WitherholdKeep")] [assembly: AssemblyTitle("WitherholdKeep")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace WitherholdKeep { [BepInPlugin("DirtyGames.WitherholdKeep", "WitherholdKeep", "1.0.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class WitherholdKeep : BaseUnityPlugin { public AssetBundle bundle = null; public bool HasLoadedABundle = false; public string error = ""; internal static WitherholdKeep Instance { get; private set; } internal static ManualLogSource Logger => Instance._logger; private ManualLogSource _logger => ((BaseUnityPlugin)this).Logger; internal Harmony? Harmony { get; set; } private void Awake() { Instance = this; ((Component)this).gameObject.transform.parent = null; ((Object)((Component)this).gameObject).hideFlags = (HideFlags)61; Patch(); string[] manifestResourceNames = Assembly.GetExecutingAssembly().GetManifestResourceNames(); foreach (string text in manifestResourceNames) { Logger.LogInfo((object)("Embedded resource: " + text)); } LoadBundle("WitherholdKeep.minecraftbundle"); Logger.LogInfo((object)$"{((BaseUnityPlugin)this).Info.Metadata.GUID} v{((BaseUnityPlugin)this).Info.Metadata.Version} has loaded! Please send any bug reports / suggestions in the discord."); if ((Object)(object)bundle != (Object)null) { string[] array = new string[11] { "Valuable Slime", "Valuable Minecraft Lever", "Valuable Sushi", "Valuable Gameboy", "Valuable Minecraft Egg", "Valuable Globe - Medium", "Valuable Minecraft Radio", "Valuable Command Block", "Valuable Diamond Ore", "Valuable Minecraft Vase", "Valuable Redstone Lamp" }; string[] array2 = array; foreach (string text2 in array2) { GameObject val = bundle.LoadAsset<GameObject>(text2 + ".prefab"); Valuables.RegisterValuable(val); } } else { Debug.LogError((object)"AssetBundle 'bundle' is null. Failed to load valuables."); } } internal void Patch() { //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_0021: Expected O, but got Unknown //IL_0026: Expected O, but got Unknown if (Harmony == null) { Harmony val = new Harmony(((BaseUnityPlugin)this).Info.Metadata.GUID); Harmony val2 = val; Harmony = val; } Harmony.PatchAll(); } internal void Unpatch() { Harmony? harmony = Harmony; if (harmony != null) { harmony.UnpatchSelf(); } } public bool LoadBundle(string resource) { if (HasLoadedABundle) { return true; } try { if (string.IsNullOrEmpty(resource)) { error = "Null Or Empty Resource String!"; return false; } Stream manifestResourceStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resource); if (manifestResourceStream == null) { error = "Could not find resource stream: " + resource; return false; } using MemoryStream memoryStream = new MemoryStream((int)manifestResourceStream.Length); manifestResourceStream.CopyTo(memoryStream); if (memoryStream.Length <= 0) { error = "Empty memory stream!"; return false; } return LoadBundle(memoryStream.ToArray()); } catch (Exception ex) { error = ex.ToString(); return false; } } public bool LoadBundle(byte[] resource) { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) if (HasLoadedABundle) { return true; } try { AssetBundle val = AssetBundle.LoadFromMemory(resource); if ((Object)(object)val != (Object)null) { ((Object)val).hideFlags = (HideFlags)(((Object)val).hideFlags | 0x20); bundle = val; HasLoadedABundle = true; return true; } HasLoadedABundle = true; } catch (Exception ex) { error = ex.ToString(); return false; } return false; } public T Load<T>(string str) where T : Object { //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) try { if (HasLoadedABundle) { Object obj = bundle.LoadAsset(str, typeof(T)); T val = (T)(object)((obj is T) ? obj : null); ((Object)val).hideFlags = (HideFlags)(((Object)val).hideFlags | 0x20); return val; } } catch (Exception ex) { error = ex.ToString(); } return default(T); } } [HarmonyPatch(typeof(LevelGenerator), "Start")] public class LevelGeneratorStartPatch { [HarmonyPrefix] public static void Prefix() { RunManager instance = RunManager.instance; LevelGenerator instance2 = LevelGenerator.Instance; AssetBundle bundle = WitherholdKeep.Instance.bundle; Level val = WitherholdKeep.Instance.Load<Level>("Level - Witherhold.asset"); if ((Object)(object)instance != (Object)null && (Object)(object)instance2 != (Object)null) { if ((Object)(object)val != (Object)null) { Levels.RegisterLevel(val); Debug.Log((object)"Witherhold Added!"); } else { Debug.LogError((object)"Level prefab is null!"); } } } } }