Please disclose if your mod was created primarily 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 BrickWalls v0.3.3
plugins\BrickWalls.dll
Decompiled a year agousing 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 HarmonyLib; using Jotunn; using Jotunn.Configs; using Jotunn.Entities; using Jotunn.Managers; using Jotunn.Utils; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("BrickWalls")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("BrickWalls")] [assembly: AssemblyCopyright("Copyright © 2021")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("e3243d22-4307-4008-ba36-9f326008cde5")] [assembly: AssemblyFileVersion("0.0.1.0")] [assembly: TargetFramework(".NETFramework,Version=v4.6.2", FrameworkDisplayName = ".NET Framework 4.6.2")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.1.0")] namespace BrickWalls { [BepInPlugin("org.bepinex.plugins.bid.brickwalls", "BrickWalls", "0.3.3")] [BepInDependency(/*Could not decode attribute arguments.*/)] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] internal class BrickWalls : BaseUnityPlugin { public const string PluginGUID = "org.bepinex.plugins.bid.brickwalls"; public const string PluginName = "BrickWalls"; public const string PluginVersion = "0.3.3"; public static CustomLocalization Localization = LocalizationManager.Instance.GetLocalization(); public static ConfigEntry<float> ClayMinAltitudeConfig; public static ConfigEntry<float> ClayMaxAltitudeConfig; public static ConfigEntry<float> ClayMinConfig; public static ConfigEntry<float> ClayMaxConfig; private Dictionary<string, Material> Materials = new Dictionary<string, Material>(); private readonly Harmony harmony = new Harmony("org.bepinex.plugins.bid.brickwalls"); private static string CategoryName; private void Awake() { //IL_0030: Unknown result type (might be due to invalid IL or missing references) Logger.LogInfo((object)"BrickWalls has landed"); CategoryName = "bricks"; PrefabManager.OnVanillaPrefabsAvailable += AddClonedItems; CreateConfigValues(); new Harmony("org.bepinex.plugins.bid.brickwalls").PatchAll(); } private void CreateConfigValues() { //IL_002f: 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_003c: Expected O, but got Unknown //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Expected O, but got Unknown //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Expected O, but got Unknown //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Expected O, but got Unknown //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Expected O, but got Unknown //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Expected O, but got Unknown //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Expected O, but got Unknown //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Expected O, but got Unknown ((BaseUnityPlugin)this).Config.SaveOnConfigSet = true; ClayMinAltitudeConfig = ((BaseUnityPlugin)this).Config.Bind<float>("Server config", "ClayMinAltitude", -0.5f, new ConfigDescription("Min altitude clay will spawn", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true } })); ClayMaxAltitudeConfig = ((BaseUnityPlugin)this).Config.Bind<float>("Server config", "ClayMaxAltitude", 1f, new ConfigDescription("Max altitude clay will spawn", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true } })); ClayMinConfig = ((BaseUnityPlugin)this).Config.Bind<float>("Server config", "ClayMin", 1f, new ConfigDescription("Min amount per zone", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true } })); ClayMaxConfig = ((BaseUnityPlugin)this).Config.Bind<float>("Server config", "ClayMax", 10f, new ConfigDescription("values 0-1: chance to place clay; value 1+: max amount per zone", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true } })); SynchronizationManager.OnConfigurationSynchronized += delegate(object obj, ConfigurationSynchronizationEventArgs attr) { _ = attr.InitialSynchronization; }; } private void OnDestroy() { harmony.UnpatchSelf(); } private void ChangeMaterial(GameObject obj, Material matNew, Material matWorn, Material matBroken) { WearNTear component = obj.GetComponent<WearNTear>(); Transform val = obj.transform.Find("new"); component.m_new = ((Component)val).gameObject; MeshRenderer[] componentsInChildren = ((Component)val).GetComponentsInChildren<MeshRenderer>(); for (int i = 0; i < componentsInChildren.Length; i++) { ((Renderer)componentsInChildren[i]).material = matNew; } val = obj.transform.Find("worn"); component.m_worn = ((Component)val).gameObject; componentsInChildren = ((Component)val).GetComponentsInChildren<MeshRenderer>(); for (int i = 0; i < componentsInChildren.Length; i++) { ((Renderer)componentsInChildren[i]).material = matWorn; } val = obj.transform.Find("broken"); component.m_broken = ((Component)val).gameObject; componentsInChildren = ((Component)val).GetComponentsInChildren<MeshRenderer>(); for (int i = 0; i < componentsInChildren.Length; i++) { ((Renderer)componentsInChildren[i]).material = matBroken; } } private void LoadMaterial(AssetBundle brickWallsAssetBundle, string name, int scale = 1) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Expected O, but got Unknown //IL_0024: Unknown result type (might be due to invalid IL or missing references) Material val = brickWallsAssetBundle.LoadAsset<Material>(name); if (scale != 1) { Vector2 val2 = default(Vector2); ((Vector2)(ref val2))..ctor((float)scale, (float)scale); Material val3 = new Material(val); val3.SetTextureScale("_MainTex", val2); Materials.Add(name + scale, val3); } else { Materials.Add(name, val); } } private Material GetMaterial(string name) { return Materials[name]; } private void LoadMaterials(AssetBundle brickWallsAssetBundle) { LoadMaterial(brickWallsAssetBundle, "mat_clay_ore"); LoadMaterial(brickWallsAssetBundle, "mat_claywhite_ore"); LoadMaterial(brickWallsAssetBundle, "Color_clay_new"); LoadMaterial(brickWallsAssetBundle, "Color_clay_worn"); LoadMaterial(brickWallsAssetBundle, "Color_clay_broken"); LoadMaterial(brickWallsAssetBundle, "Color_claywhite_new"); LoadMaterial(brickWallsAssetBundle, "Color_claywhite_worn"); LoadMaterial(brickWallsAssetBundle, "Color_claywhite_broken"); LoadMaterial(brickWallsAssetBundle, "Color_clay_new", 3); LoadMaterial(brickWallsAssetBundle, "Color_clay_worn", 3); LoadMaterial(brickWallsAssetBundle, "Color_clay_broken", 3); LoadMaterial(brickWallsAssetBundle, "Color_claywhite_new", 3); LoadMaterial(brickWallsAssetBundle, "Color_claywhite_worn", 3); LoadMaterial(brickWallsAssetBundle, "Color_claywhite_broken", 3); LoadMaterial(brickWallsAssetBundle, "roof_clay_new"); LoadMaterial(brickWallsAssetBundle, "roof_claywhite_new"); LoadMaterial(brickWallsAssetBundle, "roof_clay_worn"); LoadMaterial(brickWallsAssetBundle, "roof_claywhite_worn"); LoadMaterial(brickWallsAssetBundle, "roof_clay_broken"); LoadMaterial(brickWallsAssetBundle, "roof_claywhite_broken"); } private GameObject AddOre(string name) { //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Expected O, but got Unknown //IL_00f3: Unknown result type (might be due to invalid IL or missing references) string name2 = "item_" + name; GameObject val = PrefabManager.Instance.CreateClonedPrefab("ClayOre" + name, "CopperOre"); ((Object)val).name = name2; ItemData itemData = val.GetComponent<ItemDrop>().m_itemData; itemData.m_shared.m_name = "$item_" + name + "ore"; itemData.m_shared.m_description = "$item_" + name + "ore_description"; itemData.m_shared.m_weight = 2f; itemData.m_shared.m_maxStackSize = 50; itemData.m_shared.m_teleportable = true; ((Component)val.transform.GetChild(0)).GetComponentInChildren<Renderer>().sharedMaterial = GetMaterial("mat_" + name + "_ore"); CustomItem val2 = new CustomItem(val, true); ItemManager.Instance.AddItem(val2); val.GetComponent<ItemDrop>().m_itemData.m_shared.m_icons[0] = RenderManager.Instance.Render(val, RenderManager.IsometricRotation); return val; } private void AddMine(AssetBundle brickWallsAssetBundle, string name, GameObject drop, Biome biome) { //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Expected O, but got Unknown //IL_01a3: Unknown result type (might be due to invalid IL or missing references) //IL_01aa: Expected O, but got Unknown //IL_01c8: Unknown result type (might be due to invalid IL or missing references) //IL_01d2: Expected O, but got Unknown //IL_01df: Unknown result type (might be due to invalid IL or missing references) //IL_01e6: Expected O, but got Unknown //IL_01e8: Unknown result type (might be due to invalid IL or missing references) //IL_0257: Unknown result type (might be due to invalid IL or missing references) //IL_025e: Expected O, but got Unknown Texture val = brickWallsAssetBundle.LoadAsset<Texture>(name + "small"); Material val2 = null; GameObject val3 = PrefabManager.Instance.CreateClonedPrefab("vfx_" + name + "_Destroyed_large", "vfx_RockDestroyed_large"); GameObject val4 = PrefabManager.Instance.CreateClonedPrefab("rock_" + name, "rock4_coast"); GameObject val5 = PrefabManager.Instance.CreateClonedPrefab("rock_" + name + "_frac", "rock4_coast_frac"); DropData value = default(DropData); value.m_item = drop; val5.GetComponent<MineRock5>().m_dropItems.m_drops[0] = value; Renderer[] componentsInChildren = val4.GetComponentsInChildren<Renderer>(); foreach (Renderer val6 in componentsInChildren) { if ((Object)(object)val2 == (Object)null) { val2 = new Material(val6.sharedMaterial); val2.SetTexture("_MainTex", val); ((Object)val2).name = "material_" + name; } val6.sharedMaterial = val2; } componentsInChildren = val5.GetComponentsInChildren<Renderer>(); foreach (Renderer val7 in componentsInChildren) { Material[] sharedMaterials = val7.sharedMaterials; for (int j = 0; j < sharedMaterials.Length; j++) { sharedMaterials[j] = val2; } val7.sharedMaterials = sharedMaterials; } componentsInChildren = ((Component)val3.transform.GetChild(0)).GetComponentsInChildren<Renderer>(); foreach (Renderer val8 in componentsInChildren) { Material[] sharedMaterials2 = val8.sharedMaterials; for (int k = 0; k < sharedMaterials2.Length; k++) { sharedMaterials2[k] = val2; } val8.sharedMaterials = sharedMaterials2; } MineRock5 component = val5.GetComponent<MineRock5>(); EffectData val9 = new EffectData(); val9.m_prefab = val3; component.m_destroyedEffect.m_effectPrefabs[1] = val9; PrefabManager.Instance.AddPrefab(new CustomPrefab(val5, false)); val4.GetComponent<Destructible>().m_spawnWhenDestroyed = val5; VegetationConfig val10 = new VegetationConfig(); val10.Biome = biome; val10.BlockCheck = true; val10.ScaleMax = 0.15f; val10.MinAltitude = ClayMinAltitudeConfig.Value; val10.MaxAltitude = ClayMaxAltitudeConfig.Value; val10.Min = ClayMinConfig.Value; val10.Max = ClayMaxConfig.Value; val10.GroundOffset = -0.5f; CustomVegetation val11 = new CustomVegetation(val4, false, val10); ZoneManager.Instance.AddCustomVegetation(val11); } private void AddRoofClone(string materialname, string roofname) { //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Expected O, but got Unknown //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_0139: Expected O, but got Unknown //IL_0240: Unknown result type (might be due to invalid IL or missing references) //IL_0247: Expected O, but got Unknown //IL_025d: Unknown result type (might be due to invalid IL or missing references) //IL_0262: Unknown result type (might be due to invalid IL or missing references) //IL_0278: Unknown result type (might be due to invalid IL or missing references) //IL_027f: Unknown result type (might be due to invalid IL or missing references) //IL_0287: Expected O, but got Unknown //IL_0289: Unknown result type (might be due to invalid IL or missing references) //IL_028e: Unknown result type (might be due to invalid IL or missing references) //IL_0299: Unknown result type (might be due to invalid IL or missing references) //IL_02a0: Unknown result type (might be due to invalid IL or missing references) //IL_02a8: Expected O, but got Unknown //IL_02b5: 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_02e8: Expected O, but got Unknown //IL_01dc: Unknown result type (might be due to invalid IL or missing references) //IL_01e3: Expected O, but got Unknown GameObject val = PrefabManager.Instance.CreateClonedPrefab(materialname + "_" + roofname, "darkwood_" + roofname); val.GetComponent<Piece>().m_name = "$piece_" + materialname + "_" + roofname; MeshRenderer[] componentsInChildren = ((Component)val.transform.Find("New")).GetComponentsInChildren<MeshRenderer>(); foreach (MeshRenderer val2 in componentsInChildren) { string text = "roof_mat_" + materialname + "_new"; Material val3 = null; if (!Materials.ContainsKey(text)) { val3 = new Material(((Renderer)val2).sharedMaterial); val3.SetTexture("_MainTex", GetMaterial("roof_" + materialname + "_new").mainTexture); Materials.Add(text, val3); } val3 = GetMaterial(text); ((Renderer)val2).sharedMaterial = val3; } componentsInChildren = ((Component)val.transform.Find("Worn")).GetComponentsInChildren<MeshRenderer>(); foreach (MeshRenderer val4 in componentsInChildren) { string text2 = "roof_mat_" + materialname + "_worn"; Material val5 = null; if (!Materials.ContainsKey(text2)) { val5 = new Material(((Renderer)val4).sharedMaterial); val5.SetTexture("_MainTex", GetMaterial("roof_" + materialname + "_worn").mainTexture); Materials.Add(text2, val5); } val5 = GetMaterial(text2); ((Renderer)val4).sharedMaterial = val5; } componentsInChildren = ((Component)val.transform.Find("Broken")).GetComponentsInChildren<MeshRenderer>(); foreach (MeshRenderer val6 in componentsInChildren) { string text3 = "roof_mat_" + materialname + "_broken"; Material val7 = null; if (!Materials.ContainsKey(text3)) { val7 = new Material(((Renderer)val6).sharedMaterial); val7.SetTexture("_MainTex", GetMaterial("roof_" + materialname + "_broken").mainTexture); Materials.Add(text3, val7); } val7 = GetMaterial(text3); ((Renderer)val6).sharedMaterial = val7; } PieceManager instance = PieceManager.Instance; PieceConfig val8 = new PieceConfig(); val8.PieceTable = "Hammer"; val8.Requirements = (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig { Item = "item_" + materialname + "_brick", Recover = true, Amount = 2 }, new RequirementConfig { Item = "Wood", Recover = true, Amount = 2 } }; val8.Icon = RenderManager.Instance.Render(val, RenderManager.IsometricRotation); val8.CraftingStation = "piece_stonecutter"; val8.Category = CategoryName; instance.AddPiece(new CustomPiece(val, true, val8)); } private void addArch(string material) { //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Unknown result type (might be due to invalid IL or missing references) //IL_01c7: Unknown result type (might be due to invalid IL or missing references) //IL_01cc: Unknown result type (might be due to invalid IL or missing references) //IL_01e3: Unknown result type (might be due to invalid IL or missing references) //IL_01f0: Unknown result type (might be due to invalid IL or missing references) //IL_01f7: Expected O, but got Unknown //IL_020d: Unknown result type (might be due to invalid IL or missing references) //IL_0212: Unknown result type (might be due to invalid IL or missing references) //IL_0228: Unknown result type (might be due to invalid IL or missing references) //IL_022f: Unknown result type (might be due to invalid IL or missing references) //IL_0237: Expected O, but got Unknown //IL_0244: Unknown result type (might be due to invalid IL or missing references) //IL_026d: Unknown result type (might be due to invalid IL or missing references) //IL_0277: Expected O, but got Unknown //IL_0197: Unknown result type (might be due to invalid IL or missing references) Vector2 val = default(Vector2); ((Vector2)(ref val))..ctor(3f, 3f); GameObject val2 = PrefabManager.Instance.CreateClonedPrefab(material + "_arch", "stone_arch"); val2.GetComponent<Piece>().m_name = "$piece_" + material + "_arch"; Renderer[] componentsInChildren = ((Component)val2.transform.Find("New")).GetComponentsInChildren<Renderer>(); foreach (Renderer val3 in componentsInChildren) { Material[] sharedMaterials = val3.sharedMaterials; for (int j = 0; j < sharedMaterials.Length; j++) { sharedMaterials[j] = GetMaterial("Color_" + material + "_new3"); sharedMaterials[j].SetTextureScale("_MainTex", val); } val3.sharedMaterials = sharedMaterials; } componentsInChildren = ((Component)val2.transform.Find("Worn")).GetComponentsInChildren<Renderer>(); foreach (Renderer val4 in componentsInChildren) { Material[] sharedMaterials2 = val4.sharedMaterials; for (int k = 0; k < sharedMaterials2.Length; k++) { sharedMaterials2[k] = GetMaterial("Color_" + material + "_worn3"); sharedMaterials2[k].SetTextureScale("_MainTex", val); } val4.sharedMaterials = sharedMaterials2; } componentsInChildren = ((Component)val2.transform.Find("Broken")).GetComponentsInChildren<Renderer>(); foreach (Renderer val5 in componentsInChildren) { Material[] sharedMaterials3 = val5.sharedMaterials; for (int l = 0; l < sharedMaterials3.Length; l++) { sharedMaterials3[l] = GetMaterial("Color_" + material + "_broken3"); sharedMaterials3[l].SetTextureScale("_MainTex", val); } val5.sharedMaterials = sharedMaterials3; } Vector3 localScale = val2.transform.localScale; localScale.z *= 0.5f; val2.transform.localScale = localScale; PieceManager instance = PieceManager.Instance; PieceConfig val6 = new PieceConfig(); val6.PieceTable = "Hammer"; val6.Requirements = (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig { Item = "item_" + material + "_brick", Recover = true, Amount = 6 } }; val6.Icon = RenderManager.Instance.Render(val2, RenderManager.IsometricRotation); val6.CraftingStation = "piece_stonecutter"; val6.Category = CategoryName; instance.AddPiece(new CustomPiece(val2, true, val6)); } private void AddItemAndConversion(AssetBundle brickWallsAssetBundle, string name) { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Expected O, but got Unknown //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Expected O, but got Unknown //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Expected O, but got Unknown string text = "brick_" + name + "_item"; GameObject val = brickWallsAssetBundle.LoadAsset<GameObject>(text); CustomItem val2 = new CustomItem(val, true); ((Object)val).name = "item_" + name + "_brick"; val.GetComponent<ItemDrop>().m_itemData.m_shared.m_icons[0] = RenderManager.Instance.Render(val, RenderManager.IsometricRotation); ItemManager.Instance.AddItem(val2); SmelterConversionConfig val3 = new SmelterConversionConfig(); ((ConversionConfig)val3).FromItem = "item_" + name; ((ConversionConfig)val3).ToItem = "item_" + name + "_brick"; ((ConversionConfig)val3).Station = "CharcoalKiln"; ItemManager.Instance.AddItemConversion(new CustomItemConversion((ConversionConfig)(object)val3)); } private void AddBrickPiece(AssetBundle brickWallsAssetBundle, string asset, string material, int cost = 3) { //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Expected O, but got Unknown //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_0139: Expected O, but got Unknown //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Unknown result type (might be due to invalid IL or missing references) //IL_016a: Unknown result type (might be due to invalid IL or missing references) //IL_0171: Unknown result type (might be due to invalid IL or missing references) //IL_017a: Expected O, but got Unknown //IL_0187: Unknown result type (might be due to invalid IL or missing references) //IL_01b0: Unknown result type (might be due to invalid IL or missing references) //IL_01ba: Expected O, but got Unknown GameObject val = PrefabManager.Instance.CreateClonedPrefab("vfx_ClayDestroyed_large" + asset + material, "vfx_RockDestroyed"); Renderer[] componentsInChildren = ((Component)val.transform.GetChild(0)).GetComponentsInChildren<Renderer>(); foreach (Renderer val2 in componentsInChildren) { Material[] sharedMaterials = val2.sharedMaterials; for (int j = 0; j < sharedMaterials.Length; j++) { sharedMaterials[j] = GetMaterial("mat_" + material + "_ore"); } val2.sharedMaterials = sharedMaterials; } GameObject val3 = brickWallsAssetBundle.LoadAsset<GameObject>(asset); val3 = PrefabManager.Instance.CreateClonedPrefab(asset + "_" + material, val3); val3.GetComponent<Piece>().m_name = "$piece_" + asset + "_" + material; WearNTear component = val3.GetComponent<WearNTear>(); EffectData val4 = new EffectData(); val4.m_prefab = val; component.m_destroyedEffect.m_effectPrefabs[1] = val4; ChangeMaterial(val3, GetMaterial("Color_" + material + "_new"), GetMaterial("Color_" + material + "_worn"), GetMaterial("Color_" + material + "_broken")); PieceManager instance = PieceManager.Instance; GameObject obj = val3; PieceConfig val5 = new PieceConfig(); val5.PieceTable = "Hammer"; val5.Requirements = (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig { Item = "item_" + material + "_brick", Recover = true, Amount = cost } }; val5.Icon = RenderManager.Instance.Render(val3, RenderManager.IsometricRotation); val5.CraftingStation = "piece_stonecutter"; val5.Category = CategoryName; instance.AddPiece(new CustomPiece(obj, true, val5)); } private void AddClonedItems() { AssetBundle val = AssetUtils.LoadAssetBundleFromResources("brickwalls"); if ((Object)(object)val == (Object)null) { MonoBehaviour.print((object)"Error loading assetbundle bricks"); return; } try { LoadMaterials(val); GameObject drop = AddOre("clay"); GameObject drop2 = AddOre("claywhite"); AddMine(val, "clay", drop, (Biome)9); AddMine(val, "claywhite", drop2, (Biome)16); AddItemAndConversion(val, "clay"); AddItemAndConversion(val, "claywhite"); AddBrickPiece(val, "ClayBrickHalf", "clay", 1); AddBrickPiece(val, "ClayBrick", "clay", 1); AddBrickPiece(val, "ClayBrick1x1", "clay"); AddBrickPiece(val, "ClayBrick2x1", "clay", 4); AddBrickPiece(val, "ClayBrick4x2", "clay", 6); AddBrickPiece(val, "ClayBrickPillar", "clay", 5); AddBrickPiece(val, "ClayBrickFloor", "clay", 6); AddBrickPiece(val, "ClayBrickStair", "clay", 8); addArch("clay"); AddRoofClone("clay", "roof"); AddRoofClone("clay", "roof_45"); AddRoofClone("clay", "roof_icorner"); AddRoofClone("clay", "roof_icorner_45"); AddRoofClone("clay", "roof_ocorner"); AddRoofClone("clay", "roof_ocorner_45"); AddRoofClone("clay", "roof_top"); AddRoofClone("clay", "roof_top_45"); AddBrickPiece(val, "ClayBrickHalf", "claywhite", 1); AddBrickPiece(val, "ClayBrick", "claywhite", 1); AddBrickPiece(val, "ClayBrick1x1", "claywhite"); AddBrickPiece(val, "ClayBrick2x1", "claywhite", 4); AddBrickPiece(val, "ClayBrick4x2", "claywhite", 6); AddBrickPiece(val, "ClayBrickPillar", "claywhite", 5); AddBrickPiece(val, "ClayBrickFloor", "claywhite", 6); AddBrickPiece(val, "ClayBrickStair", "claywhite", 8); addArch("claywhite"); AddRoofClone("claywhite", "roof"); AddRoofClone("claywhite", "roof_45"); AddRoofClone("claywhite", "roof_icorner"); AddRoofClone("claywhite", "roof_icorner_45"); AddRoofClone("claywhite", "roof_ocorner"); AddRoofClone("claywhite", "roof_ocorner_45"); AddRoofClone("claywhite", "roof_top"); AddRoofClone("claywhite", "roof_top_45"); Materials.Clear(); } finally { val.Unload(false); } PrefabManager.OnVanillaPrefabsAvailable -= AddClonedItems; } } } namespace BrickWalls.Patches { [HarmonyPatch(typeof(Smelter), "Spawn")] internal class Smelter_Spawn_patch { private static void Postfix(string ore, int stack, Transform ___m_outputPoint) { //IL_0028: 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) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) if (ore.Equals("item_clay")) { GameObject itemPrefab = ObjectDB.instance.GetItemPrefab("item_clay_brick"); if ((Object)(object)itemPrefab != (Object)null) { Object.Instantiate<GameObject>(itemPrefab, ___m_outputPoint.position, ___m_outputPoint.rotation).GetComponent<ItemDrop>().m_itemData.m_stack = stack; } } else if (ore.Equals("item_claywhite")) { GameObject itemPrefab2 = ObjectDB.instance.GetItemPrefab("item_claywhite_brick"); if ((Object)(object)itemPrefab2 != (Object)null) { Object.Instantiate<GameObject>(itemPrefab2, ___m_outputPoint.position, ___m_outputPoint.rotation).GetComponent<ItemDrop>().m_itemData.m_stack = stack; } } } } }