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 Mug v1.0.2
Mug.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.Configuration; using BepInEx.Logging; using LethalLib.Modules; using Microsoft.CodeAnalysis; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("Mug")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("Mug")] [assembly: AssemblyTitle("Mug")] [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 Mug { public static class ItemRegistration { public static void RegisterCustomItem(string assetBundlePath, string assetPath, int rarity = 30, LevelTypes levelType = -1) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) AssetBundle val = AssetBundle.LoadFromFile(assetBundlePath); if ((Object)(object)val == (Object)null) { Debug.LogError((object)("Failed to load asset bundle at " + assetBundlePath)); } else { RegisterCustomItem(val, assetPath, rarity, levelType); } } public static void RegisterCustomItem(AssetBundle assetBundle, string assetPath, int rarity = 30, LevelTypes levelType = -1) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) Item val = assetBundle.LoadAsset<Item>(assetPath); if ((Object)(object)val == (Object)null) { Debug.LogError((object)("Failed to load item at path " + assetPath)); return; } NetworkPrefabs.RegisterNetworkPrefab(val.spawnPrefab); Items.RegisterScrap(val, rarity, levelType); } } [BepInPlugin("Mug", "Mug", "1.0.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Mug : BaseUnityPlugin { public static Mug Instance { get; private set; } private static ManualLogSource Logger { get; set; } private static AssetBundle MugBundle { get; set; } private void Awake() { Logger = ((BaseUnityPlugin)this).Logger; Instance = this; if (LoadBundles()) { RegisterItems(); Logger.LogInfo((object)"Mug loaded successfully."); } } private static bool LoadBundles() { MugBundle = LoadBundle("mug bundle", "mug"); return (Object)(object)MugBundle != (Object)null; } private static AssetBundle LoadBundle(string bundleName, string logPrefix) { AssetBundle val = AssetBundle.LoadFromFile(PathUtils.GetForResourceInAssembly(bundleName)); if ((Object)(object)val == (Object)null) { Logger.LogError((object)("Failed to load " + logPrefix + " asset bundle.")); } string[] allAssetNames = val.GetAllAssetNames(); foreach (string text in allAssetNames) { Logger.LogInfo((object)(" - " + text)); } return val; } private void RegisterItems() { RegisterMugItem(); RegisterMugKegItem(); } private void RegisterMugItem() { Item val = LoadItemFromBundle(MugBundle, "assets/mug/mugrootbeer.asset", "mug"); if (!((Object)(object)val == (Object)null)) { ConfigEntry<int> val2 = CreateSliderConfig(((BaseUnityPlugin)this).Config, "Mug Rarity", 30, "The rarity of Mug Root Beer. Higher values are more common."); RegisterItemWithGame(val, val2.Value); } } private void RegisterMugKegItem() { Item val = LoadItemFromBundle(MugBundle, "assets/mug/mugrootbeerkeg.asset", "mug keg"); if (!((Object)(object)val == (Object)null)) { ConfigEntry<int> val2 = CreateSliderConfig(((BaseUnityPlugin)this).Config, "Mug Keg Rarity", 10, "The rarity of Mug Root Beer Keg. Higher values are more common."); RegisterItemWithGame(val, val2.Value); } } private static Item LoadItemFromBundle(AssetBundle bundle, string assetPath, string itemName) { Item val = bundle.LoadAsset<Item>(assetPath); if ((Object)(object)val == (Object)null) { Logger.LogError((object)("Failed to load " + itemName + " item from bundle.")); } return val; } private static void RegisterItemWithGame(Item item, int rarity) { Items.RegisterScrap(item, rarity, (LevelTypes)(-1)); NetworkPrefabs.RegisterNetworkPrefab(item.spawnPrefab); } private static ConfigEntry<int> CreateSliderConfig(ConfigFile config, string key, int defaultValue, string description) { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown return config.Bind<int>("General", key, defaultValue, new ConfigDescription(description, (AcceptableValueBase)(object)new AcceptableValueRange<int>(0, 100), Array.Empty<object>())); } } public static class PathUtils { public static string GetForResourceInAssembly(string resourceName, Assembly? assembly = null) { if (assembly == null) { assembly = Assembly.GetCallingAssembly(); } return Path.Combine(Path.GetDirectoryName(assembly.Location) ?? string.Empty, resourceName); } } public static class MyPluginInfo { public const string PLUGIN_GUID = "Mug"; public const string PLUGIN_NAME = "Mug"; public const string PLUGIN_VERSION = "1.0.0"; } }