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 Custom Cans and Mugs v1.1.2
CustomTextures.dll
Decompiled 2 years agousing 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 BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("CustomTextures")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("CustomTextures")] [assembly: AssemblyCopyright("Copyright © 2024")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("d6b049a0-55ff-46f1-b46b-f6829fca90b7")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] namespace CustomTextures; internal class ScrapType { public string scrapType; public string folderName; public string holdText; public List<string> names; public List<Texture> textures; public ConfigEntry<bool> enabled; public ScrapType(string _scrapType, string _folderName, string _holdText = "") { scrapType = _scrapType; folderName = _folderName; holdText = _holdText; names = new List<string>(); textures = new List<Texture>(); enabled = ((BaseUnityPlugin)CustomTextureMod.Instance).Config.Bind<bool>("General", "Enable" + scrapType, true, "true = use custom textures, false = use vanilla textures only"); } } [BepInPlugin("ironbean.CustomScrapTextures", "Custom Scrap Textures", "1.1.2")] public class CustomTextureMod : BaseUnityPlugin { [HarmonyPatch(typeof(GrabbableObject))] internal class ScrapPatch { [HarmonyPatch("SetScrapValue")] [HarmonyPostfix] private static void CreatePatch(GrabbableObject __instance) { int num = scraps.FindIndex((ScrapType scrap) => scrap.scrapType == ((Object)__instance.itemProperties).name); if (num == -1 || !scraps[num].enabled.Value || scraps[num].textures.Count == 0) { return; } MeshRenderer componentInChildren = ((Component)__instance).gameObject.GetComponentInChildren<MeshRenderer>(); if ((Object)(object)componentInChildren == (Object)null) { return; } int index = __instance.scrapValue % scraps[num].textures.Count; if (__instance.itemProperties.materialVariants.Length != 0) { __instance.itemProperties.materialVariants = (Material[])(object)new Material[0]; } ((Renderer)componentInChildren).material.mainTexture = scraps[num].textures[index]; if (!(scraps[num].holdText == "")) { ScanNodeProperties componentInChildren2 = ((Component)componentInChildren).GetComponentInChildren<ScanNodeProperties>(); if (!((Object)(object)componentInChildren2 == (Object)null)) { __instance.itemProperties.itemName = scraps[num].holdText; componentInChildren2.headerText = ((!scraps[num].names[index].StartsWith("-")) ? scraps[num].names[index] : scraps[num].holdText); } } } } private const string modGUID = "ironbean.CustomScrapTextures"; private const string modName = "Custom Scrap Textures"; private const string modVersion = "1.1.2"; private readonly Harmony harmony = new Harmony("ironbean.CustomScrapTextures"); internal static CustomTextureMod Instance; internal static ManualLogSource mls; private static readonly string[] ParentFolderNames = new string[1] { "ScrapTextures" }; private static readonly List<string> ParentDirectories = new List<string>(); internal static List<ScrapType> scraps = new List<ScrapType>(); private void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; } mls = Logger.CreateLogSource("ironbean.CustomScrapTextures"); string[] parentFolderNames = ParentFolderNames; foreach (string searchPattern in parentFolderNames) { Directory.GetDirectories(Paths.PluginPath, searchPattern, SearchOption.AllDirectories).ToList().ForEach(delegate(string dir) { ParentDirectories.Add(dir); }); } scraps.Add(new ScrapType("Mug", "mugs")); scraps.Add(new ScrapType("SodaCanRed", "cans", "Soda can")); scraps.ForEach(delegate(ScrapType scrapType) { LoadTextures(scrapType.folderName, scrapType.names, scrapType.textures); }); harmony.PatchAll(typeof(CustomTextureMod)); harmony.PatchAll(typeof(ScrapPatch)); } internal static void LoadTextures(string scrapType, List<string> scrapNames, List<Texture> scrapTextures) { //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Expected O, but got Unknown mls.LogInfo((object)("Loading custom textures for " + scrapType)); List<string> list = new List<string>(); foreach (string parentDirectory in ParentDirectories) { if (!Directory.Exists(Path.Combine(parentDirectory, scrapType))) { continue; } string[] files = Directory.GetFiles(Path.Combine(parentDirectory, scrapType)); string[] array = files; foreach (string text in array) { if (Path.GetExtension(text) != ".old") { scrapNames.Add(Path.GetFileNameWithoutExtension(text)); list.Add(text); } } } foreach (string item in list) { Texture2D val = new Texture2D(2, 2); ImageConversion.LoadImage(val, File.ReadAllBytes(item)); scrapTextures.Add((Texture)(object)val); } mls.LogInfo((object)("Loaded " + list.Count + " " + scrapType)); } }