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 FineWoodPieces v1.6.5
FineWoodPieces.dll
Decompiled 6 months ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Concurrent; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Globalization; using System.IO; using System.IO.Compression; using System.Linq; using System.Linq.Expressions; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Serialization; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using System.Text; using System.Text.RegularExpressions; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using ClayBuildPieces.Functions; using FineWoodPieces.Functions; using HarmonyLib; using ItemManager; using JetBrains.Annotations; using LocalizationManager; using Microsoft.CodeAnalysis; using PieceManager; using ServerSync; using TMPro; using UnityEngine; using UnityEngine.UI; using YamlDotNet.Core; using YamlDotNet.Core.Events; using YamlDotNet.Core.Tokens; using YamlDotNet.Helpers; using YamlDotNet.Serialization; using YamlDotNet.Serialization.Converters; using YamlDotNet.Serialization.EventEmitters; using YamlDotNet.Serialization.NamingConventions; using YamlDotNet.Serialization.NodeDeserializers; using YamlDotNet.Serialization.NodeTypeResolvers; using YamlDotNet.Serialization.ObjectFactories; using YamlDotNet.Serialization.ObjectGraphTraversalStrategies; using YamlDotNet.Serialization.ObjectGraphVisitors; using YamlDotNet.Serialization.Schemas; using YamlDotNet.Serialization.TypeInspectors; using YamlDotNet.Serialization.TypeResolvers; using YamlDotNet.Serialization.Utilities; using YamlDotNet.Serialization.ValueDeserializers; [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("blacks7ar")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.6.5")] [assembly: AssemblyInformationalVersion("1.6.5")] [assembly: AssemblyProduct("FineWoodPieces")] [assembly: AssemblyTitle("FineWoodPieces")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.6.5.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.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace ClayBuildPieces.Functions { public static class Helper { public static bool ZNetSceneAwake() { if ((Object)(object)ZNetScene.instance != (Object)null && ZNetScene.instance.m_prefabs.Count != 0) { return (Object)(object)ZNetScene.instance.GetPrefab("piece_workbench") != (Object)null; } return false; } } } namespace FineWoodPieces { [BepInPlugin("blacks7ar.FineWoodPieces", "FineWoodPieces", "1.6.5")] [BepInIncompatibility("blacks7ar.ClayBuildPieces")] [BepInIncompatibility("blacks7ar.FineWoodBuildPieces")] [BepInIncompatibility("blacks7ar.FineWoodFurnitures")] public class Plugin : BaseUnityPlugin { private const string modGUID = "blacks7ar.FineWoodPieces"; public const string modName = "FineWoodPieces"; public const string modAuthor = "blacks7ar"; public const string modVersion = "1.6.5"; public const string modLink = "https://valheim.thunderstore.io/package/blacks7ar/FineWoodPieces/"; private static readonly Harmony _harmony = new Harmony("blacks7ar.FineWoodPieces"); private static readonly ConfigSync _configSync = new ConfigSync("blacks7ar.FineWoodPieces") { DisplayName = "FineWoodPieces", CurrentVersion = "1.6.5", MinimumRequiredVersion = "1.6.5" }; private static ConfigEntry<FineWoodPieces.Functions.Toggle> _serverConfigLocked; public static ConfigEntry<FineWoodPieces.Functions.Toggle> _enableReed; public static ConfigEntry<float> _reedGroupRadius; public static ConfigEntry<int> _reedGroupSizeMin; public static ConfigEntry<int> _reedGroupSizeMax; public static ConfigEntry<float> _reedMax; public static ConfigEntry<FineWoodPieces.Functions.Toggle> _enableClay; public static ConfigEntry<float> _clayGroupRadius; public static ConfigEntry<int> _clayGroupSizeMin; public static ConfigEntry<int> _clayGroupSizeMax; public static ConfigEntry<float> _clayMax; public static ConfigEntry<FineWoodPieces.Functions.Toggle> _enableClayBig; public static ConfigEntry<float> _clayBigGroupRadius; public static ConfigEntry<int> _clayBigGroupSizeMin; public static ConfigEntry<int> _clayBigGroupSizeMax; public static ConfigEntry<float> _clayBigMax; public static ConfigEntry<float> _secPerUnit; public static ConfigEntry<int> _maxClay; public static ConfigEntry<FineWoodPieces.Functions.Toggle> _hideTrapDoorHoverText; private ConfigEntry<T> config<T>(string group, string name, T value, ConfigDescription description, bool synchronizedConfig = true) { //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown ConfigDescription val = new ConfigDescription(description.Description + (synchronizedConfig ? " [Synced with Server]" : " [Not Synced with Server]"), description.AcceptableValues, description.Tags); ConfigEntry<T> val2 = ((BaseUnityPlugin)this).Config.Bind<T>(group, name, value, val); _configSync.AddConfigEntry<T>(val2).SynchronizedConfig = synchronizedConfig; return val2; } public void Awake() { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Expected O, but got Unknown //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Expected O, but got Unknown //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Expected O, but got Unknown //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Expected O, but got Unknown //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Expected O, but got Unknown //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_0126: Expected O, but got Unknown //IL_0154: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Expected O, but got Unknown //IL_017b: Unknown result type (might be due to invalid IL or missing references) //IL_0186: Expected O, but got Unknown //IL_01b4: Unknown result type (might be due to invalid IL or missing references) //IL_01bf: Expected O, but got Unknown //IL_01e2: Unknown result type (might be due to invalid IL or missing references) //IL_01ed: Expected O, but got Unknown //IL_0210: Unknown result type (might be due to invalid IL or missing references) //IL_021b: Expected O, but got Unknown //IL_0249: Unknown result type (might be due to invalid IL or missing references) //IL_0254: Expected O, but got Unknown //IL_0270: Unknown result type (might be due to invalid IL or missing references) //IL_027b: Expected O, but got Unknown //IL_02a9: Unknown result type (might be due to invalid IL or missing references) //IL_02b4: Expected O, but got Unknown //IL_02d7: Unknown result type (might be due to invalid IL or missing references) //IL_02e2: Expected O, but got Unknown //IL_0305: Unknown result type (might be due to invalid IL or missing references) //IL_0310: Expected O, but got Unknown //IL_033e: Unknown result type (might be due to invalid IL or missing references) //IL_0349: Expected O, but got Unknown //IL_0377: Unknown result type (might be due to invalid IL or missing references) //IL_0382: Expected O, but got Unknown //IL_03a6: Unknown result type (might be due to invalid IL or missing references) //IL_03b1: Expected O, but got Unknown Localizer.Load(); ((BaseUnityPlugin)this).Config.SaveOnConfigSet = false; _serverConfigLocked = config("1- ServerSync", "Lock Configuration", FineWoodPieces.Functions.Toggle.On, new ConfigDescription("If On, the configuration is locked and can be changed by server admins only.", (AcceptableValueBase)null, Array.Empty<object>())); _configSync.AddLockingConfigEntry<FineWoodPieces.Functions.Toggle>(_serverConfigLocked); _hideTrapDoorHoverText = config("8- TrapDoor", "Hide HoverText", FineWoodPieces.Functions.Toggle.On, new ConfigDescription("If On, trap doors hover text and interact prompt will be hidden.", (AcceptableValueBase)null, Array.Empty<object>())); _enableReed = config("2- Reed", "Enable", FineWoodPieces.Functions.Toggle.On, new ConfigDescription("If On, harvestable reeds will spawn across meadows and black forest biomes.", (AcceptableValueBase)null, Array.Empty<object>())); _reedGroupRadius = config("2- Reed", "Group Radius", 4f, new ConfigDescription("Group radius.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 50f), Array.Empty<object>())); _reedGroupSizeMin = config("2- Reed", "Group Size Min", 4, new ConfigDescription("Minimum group size.", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 20), Array.Empty<object>())); _reedGroupSizeMax = config("2- Reed", "Group Size Max", 8, new ConfigDescription("Maximum group size.", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 20), Array.Empty<object>())); _reedMax = config("2- Reed", "Max", 10f, new ConfigDescription("Maximum amount per zone.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 20f), Array.Empty<object>())); _enableClay = config("3- Clay-Pickable", "Enable", FineWoodPieces.Functions.Toggle.On, new ConfigDescription("If On, pickable clays will spawn to all biomes except ashlands and deepnorth.", (AcceptableValueBase)null, Array.Empty<object>())); _clayGroupRadius = config("3- Clay-Pickable", "Group Radius", 2f, new ConfigDescription("Group radius.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 50f), Array.Empty<object>())); _clayGroupSizeMin = config("3- Clay-Pickable", "Group Size Min", 2, new ConfigDescription("Minimum group size.", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 20), Array.Empty<object>())); _clayGroupSizeMax = config("3- Clay-Pickable", "Group Size Max", 6, new ConfigDescription("Maximum group size.", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 20), Array.Empty<object>())); _clayMax = config("3- Clay-Pickable", "Max", 20f, new ConfigDescription("Maximum amount per zone.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 20f), Array.Empty<object>())); _enableClayBig = config("4- Clay-Cluster", "Enable", FineWoodPieces.Functions.Toggle.On, new ConfigDescription("If On, a giant cluster of clays will spawn to all biomes except ashlands and deepnorth.", (AcceptableValueBase)null, Array.Empty<object>())); _clayBigGroupRadius = config("4- Clay-Cluster", "Group Radius", 20f, new ConfigDescription("Group radius.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 50f), Array.Empty<object>())); _clayBigGroupSizeMin = config("4- Clay-Cluster", "Group Size Min", 1, new ConfigDescription("Minimum group size.", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 20), Array.Empty<object>())); _clayBigGroupSizeMax = config("4- Clay-Cluster", "Group Size Max", 1, new ConfigDescription("Maximum group size.", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 20), Array.Empty<object>())); _clayBigMax = config("4- Clay-Cluster", "Max", 5f, new ConfigDescription("Maximum amount per zone.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 20f), Array.Empty<object>())); _secPerUnit = config("5- Collector", "Duration", 120f, new ConfigDescription("How long does the collector would take to collect clays from pits in seconds.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(30f, 300f), Array.Empty<object>())); _maxClay = config("5- Collector", "Max Capacity", 10, new ConfigDescription("Maximum Capacity.", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 50), Array.Empty<object>())); PrefabsSetup.Init(); ((BaseUnityPlugin)this).Config.SaveOnConfigSet = true; ((BaseUnityPlugin)this).Config.Save(); Assembly executingAssembly = Assembly.GetExecutingAssembly(); _harmony.PatchAll(executingAssembly); } private void OnDestroy() { ((BaseUnityPlugin)this).Config.Save(); } } } namespace FineWoodPieces.Functions { public class ClayCollector : MonoBehaviour, Hoverable, Interactable { public string m_name; public Transform m_spawnPoint; public float m_secPerUnit = 10f; public int m_maxClay = 4; public ItemDrop m_clayItem; public EffectList m_spawnEffect = new EffectList(); public GameObject m_enabledObject; public Biome m_biome; [Header("Texts")] public string m_extractText = "$bcp_claycollector_extract"; public string m_collectingText = "$bcp_claycollector_collecting"; public string m_notConnectedText = "$bcp_claycollector_notconnected"; public string m_fullText = "$bcp_claycollector_full"; public ZNetView m_nview; private Collider m_collider; private Piece m_piece; private bool m_connected; private Collider[] m_sphereResults = (Collider[])(object)new Collider[32]; public void Awake() { m_nview = ((Component)this).GetComponent<ZNetView>(); m_collider = ((Component)this).GetComponentInChildren<Collider>(); m_piece = ((Component)this).GetComponent<Piece>(); if (m_nview.GetZDO() != null) { if (m_nview.IsOwner() && m_nview.GetZDO().GetLong(ZDOVars.s_lastTime, 0L) == 0L) { m_nview.GetZDO().Set(ZDOVars.s_lastTime, ZNet.instance.GetTime().Ticks); } m_nview.Register("RPC_Extract", (Action<long>)RPC_Extract); m_nview.Register("RPC_UpdateEffects", (Action<long>)RPC_UpdateEffects); ((MonoBehaviour)this).InvokeRepeating("UpdateTicks", Random.Range(0f, 2f), 5f); } } public string GetHoverText() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) if (!PrivateArea.CheckAccess(((Component)this).transform.position, 0f, false, false)) { return Localization.instance.Localize(m_name + "\n$bcp_noaccess"); } int tarLevel = GetTarLevel(); string statusText = GetStatusText(); string text = ((!m_connected) ? (m_name + "\n( " + statusText + ", " + tarLevel + " / " + m_maxClay + " ) ") : (m_name + "\n( " + statusText + ", " + tarLevel + " / " + m_maxClay + " ) <color=orange>" + TimeLeft() + "</color>")); if (tarLevel > 0) { text = text + "\n[<color=yellow><b>$KEY_Use</b></color>] " + m_extractText; } return Localization.instance.Localize(text); } public string GetHoverName() { return m_name; } public bool Interact(Humanoid character, bool repeat, bool alt) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) if (repeat) { return false; } if (!PrivateArea.CheckAccess(((Component)this).transform.position, 0f, true, false)) { return true; } if (GetTarLevel() <= 0) { return false; } Extract(); return true; } public string GetStatusText() { if (GetTarLevel() >= m_maxClay) { return m_fullText; } if (!m_connected) { return m_notConnectedText; } return m_collectingText; } public bool UseItem(Humanoid user, ItemData item) { return false; } public void Extract() { m_nview.InvokeRPC("RPC_Extract", Array.Empty<object>()); } public void RPC_Extract(long caller) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0033: 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_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_005c: 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_0067: Unknown result type (might be due to invalid IL or missing references) //IL_006c: 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_0074: Unknown result type (might be due to invalid IL or missing references) int tarLevel = GetTarLevel(); if (tarLevel > 0) { m_spawnEffect.Create(m_spawnPoint.position, Quaternion.identity, (Transform)null, 1f, -1); for (int i = 0; i < tarLevel; i++) { Vector2 val = Random.insideUnitCircle * 0.5f; Vector3 val2 = m_spawnPoint.position + new Vector3(val.x, 0.25f * (float)i, val.y); Object.Instantiate<ItemDrop>(m_clayItem, val2, Quaternion.identity); } ResetLevel(); m_nview.InvokeRPC(ZNetView.Everybody, "RPC_UpdateEffects", Array.Empty<object>()); } } private float GetTimeSinceLastUpdate() { DateTime dateTime = new DateTime(m_nview.GetZDO().GetLong(ZDOVars.s_lastTime, ZNet.instance.GetTime().Ticks)); DateTime time = ZNet.instance.GetTime(); TimeSpan timeSpan = time - dateTime; m_nview.GetZDO().Set(ZDOVars.s_lastTime, time.Ticks); double num = timeSpan.TotalSeconds; if (num < 0.0) { num = 0.0; } return (float)num; } public void ResetLevel() { m_nview.GetZDO().Set(ZDOVars.s_level, 0, false); } public void IncreaseLevel(int i) { int tarLevel = GetTarLevel(); tarLevel += i; tarLevel = Mathf.Clamp(tarLevel, 0, m_maxClay); m_nview.GetZDO().Set(ZDOVars.s_level, tarLevel, false); } private int GetTarLevel() { if (m_nview.GetZDO() != null) { return m_nview.GetZDO().GetInt(ZDOVars.s_level, 0); } return 0; } public void UpdateTicks() { //IL_0016: Unknown result type (might be due to invalid IL or missing references) if (CheckBiome() && !m_connected) { int num = Physics.OverlapSphereNonAlloc(((Component)this).transform.position, 0.2f, m_sphereResults); for (int i = 0; i < num; i++) { if (((Component)m_sphereResults[i]).gameObject.layer == 4) { m_connected = true; } } } bool flag = CheckBiome() && m_connected; if (m_nview.IsOwner() && flag) { float timeSinceLastUpdate = GetTimeSinceLastUpdate(); if (GetTarLevel() < m_maxClay) { float @float = m_nview.GetZDO().GetFloat(ZDOVars.s_product, 0f); @float += timeSinceLastUpdate; if (@float > m_secPerUnit) { int i2 = (int)(@float / m_secPerUnit); IncreaseLevel(i2); @float = 0f; } m_nview.GetZDO().Set(ZDOVars.s_product, @float); } } UpdateEffects(); } public void RPC_UpdateEffects(long caller) { UpdateEffects(); } public void UpdateEffects() { bool active = GetTarLevel() < m_maxClay && m_connected && GetStatusText() == m_collectingText; m_enabledObject.SetActive(active); } private bool CheckBiome() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Invalid comparison between Unknown and I4 return (Heightmap.FindBiome(((Component)this).transform.position) & m_biome) > 0; } private string TimeLeft() { string result = ""; if (GetTarLevel() == m_maxClay) { return result; } if (!m_nview.IsValid() || !m_nview.IsOwner()) { return result; } float @float = m_nview.GetZDO().GetFloat(ZDOVars.s_product, 0f); float num = m_secPerUnit - @float; int num2 = Mathf.FloorToInt((float)((int)num / 60)); int num3 = Mathf.FloorToInt((float)((int)num % 60)); return $"[ {num2:00}:{num3:00} ]"; } } public static class ComponentsSetup { public static void SetCollector(ZNetScene zNetScene) { //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Expected O, but got Unknown //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: 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_00d8: Expected O, but got Unknown //IL_0101: Unknown result type (might be due to invalid IL or missing references) if (Helper.ZNetSceneAwake()) { ClayCollector component = zNetScene.GetPrefab("BCP_ClayCollector").GetComponent<ClayCollector>(); component.m_name = "$bcp_claycollector"; component.m_spawnPoint = Utils.FindChild(((Component)component).gameObject.transform, "spawnpoint", (IterativeSearchType)0); component.m_secPerUnit = Plugin._secPerUnit.Value; component.m_maxClay = Plugin._maxClay.Value; component.m_clayItem = zNetScene.GetPrefab("BFP_Clay").GetComponent<ItemDrop>(); component.m_spawnEffect.m_effectPrefabs = (EffectData[])(object)new EffectData[2] { new EffectData { m_prefab = PrefabsSetup._fineWoodBundle.LoadAsset<GameObject>("bfp_sfx_pickable_pick"), m_enabled = true, m_variant = -1 }, new EffectData { m_prefab = PrefabsSetup._fineWoodBundle.LoadAsset<GameObject>("bfp_vfx_pickable_pick"), m_enabled = true, m_variant = -1 } }; component.m_enabledObject = ((Component)Utils.FindChild(((Component)component).gameObject.transform, "_enabled", (IterativeSearchType)0)).gameObject; component.m_biome = (Biome)27; } } public static void SetClayLightPost(ZNetScene zNetScene) { //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0065: 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_0085: Expected O, but got Unknown //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) if (Helper.ZNetSceneAwake()) { Fireplace component = zNetScene.GetPrefab("BFP_ClayLightPost").GetComponent<Fireplace>(); component.m_fuelItem = zNetScene.GetPrefab("Coal").GetComponent<ItemDrop>(); FireworkItem[] array = new FireworkItem[1]; FireworkItem val = new FireworkItem { m_fireworkItemCount = 1, m_fireworkItem = zNetScene.GetPrefab("Resin").GetComponent<ItemDrop>() }; EffectList val2 = new EffectList(); val2.m_effectPrefabs = (EffectData[])(object)new EffectData[1] { new EffectData { m_prefab = zNetScene.GetPrefab("vfx_Firework_Rocket") } }; val.m_fireworksEffects = val2; array[0] = val; component.m_fireworkItemList = (FireworkItem[])(object)array; } } public static void SetStoneLightPost(ZNetScene zNetScene) { //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0065: 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_0085: Expected O, but got Unknown //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) if (Helper.ZNetSceneAwake()) { Fireplace component = zNetScene.GetPrefab("BFP_StoneLightPost").GetComponent<Fireplace>(); component.m_fuelItem = zNetScene.GetPrefab("Coal").GetComponent<ItemDrop>(); FireworkItem[] array = new FireworkItem[1]; FireworkItem val = new FireworkItem { m_fireworkItemCount = 1, m_fireworkItem = zNetScene.GetPrefab("Resin").GetComponent<ItemDrop>() }; EffectList val2 = new EffectList(); val2.m_effectPrefabs = (EffectData[])(object)new EffectData[1] { new EffectData { m_prefab = zNetScene.GetPrefab("vfx_Firework_Rocket") } }; val.m_fireworksEffects = val2; array[0] = val; component.m_fireworkItemList = (FireworkItem[])(object)array; } } public static void SetTrapDoor(ZNetScene zNetScene) { //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0053: 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) //IL_0062: Expected O, but got Unknown //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Expected O, but got Unknown if (Helper.ZNetSceneAwake()) { TrapDoor component = zNetScene.GetPrefab("BFP_TrapDoor").GetComponent<TrapDoor>(); component.m_name = "$bfp_trapdoor"; component.m_checkGuardStone = true; component.m_openEffects.m_effectPrefabs = (EffectData[])(object)new EffectData[1] { new EffectData { m_prefab = PrefabsSetup._fineWoodBundle.LoadAsset<GameObject>("bfp_sfx_door_open"), m_enabled = true, m_variant = -1 } }; component.m_closeEffects.m_effectPrefabs = (EffectData[])(object)new EffectData[1] { new EffectData { m_prefab = PrefabsSetup._fineWoodBundle.LoadAsset<GameObject>("bfp_sfx_door_close"), m_enabled = true, m_variant = -1 } }; } } public static void SetArmorStand(ZNetScene zNetScene) { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Expected O, but got Unknown if (Helper.ZNetSceneAwake()) { ArmorStand component = zNetScene.GetPrefab("BFP_ArmorStand").GetComponent<ArmorStand>(); component.m_supports = new List<ArmorStandSupport>(1) { new ArmorStandSupport { m_items = new List<ItemDrop>(4) { zNetScene.GetPrefab("ArmorBronzeChest").GetComponent<ItemDrop>(), zNetScene.GetPrefab("ArmorIronChest").GetComponent<ItemDrop>(), zNetScene.GetPrefab("ArmorCarapaceChest").GetComponent<ItemDrop>(), zNetScene.GetPrefab("ArmorMageChest").GetComponent<ItemDrop>() }, m_supports = new List<GameObject>(2) { ((Component)Utils.FindChild(((Component)component).gameObject.transform, "ArmLeft", (IterativeSearchType)0)).gameObject, ((Component)Utils.FindChild(((Component)component).gameObject.transform, "ArmRight", (IterativeSearchType)0)).gameObject } } }; } } } [HarmonyPatch] public class Patches { private static readonly List<ZoneVegetation> _resourceList = new List<ZoneVegetation>(); [HarmonyPrefix] [HarmonyPatch(typeof(ClayCollector), "Awake")] private static void Awake_Prefix(ref float ___m_secPerUnit, ref int ___m_maxClay, ClayCollector __instance) { Plugin._secPerUnit.SettingChanged += delegate { __instance.m_secPerUnit = Plugin._secPerUnit.Value; }; ___m_secPerUnit = Plugin._secPerUnit.Value; Plugin._maxClay.SettingChanged += delegate { __instance.m_maxClay = Plugin._maxClay.Value; }; ___m_maxClay = Plugin._maxClay.Value; } [HarmonyPostfix] [HarmonyPatch(typeof(ClayCollector), "UpdateEffects")] private static void UpdateEffects_Postfix(ClayCollector __instance) { if ((Object)(object)__instance == (Object)null || (Object)(object)__instance.m_nview == (Object)null || !__instance.m_nview.IsValid() || !((Object)((Component)__instance).gameObject).name.StartsWith("BCP_Clay")) { return; } Transform val = Utils.FindChild(((Component)__instance).gameObject.transform, "refinery_high", (IterativeSearchType)0); Transform val2 = Utils.FindChild(((Component)__instance).gameObject.transform, "refinery_high_worn", (IterativeSearchType)0); Transform val3 = Utils.FindChild(((Component)__instance).gameObject.transform, "refineryBroken", (IterativeSearchType)0); if (__instance.GetStatusText() == __instance.m_collectingText) { if (((Component)val).gameObject.activeInHierarchy) { ((Component)val).gameObject.GetComponent<Animator>().speed = 1f; } else if (((Component)val2).gameObject.activeInHierarchy) { ((Component)val2).gameObject.GetComponent<Animator>().speed = 1f; } else if (((Component)val3).gameObject.activeInHierarchy) { ((Component)val3).gameObject.GetComponent<Animator>().speed = 1f; } } else if (((Component)val).gameObject.activeInHierarchy) { ((Component)val).gameObject.GetComponent<Animator>().speed = 0f; } else if (((Component)val2).gameObject.activeInHierarchy) { ((Component)val2).gameObject.GetComponent<Animator>().speed = 0f; } else if (((Component)val3).gameObject.activeInHierarchy) { ((Component)val3).gameObject.GetComponent<Animator>().speed = 0f; } } [HarmonyPostfix] [HarmonyPatch(typeof(ZNetScene), "Awake")] private static void Awake_Postfix(ZNetScene __instance) { ComponentsSetup.SetCollector(__instance); ComponentsSetup.SetArmorStand(__instance); ComponentsSetup.SetTrapDoor(__instance); ComponentsSetup.SetStoneLightPost(__instance); ComponentsSetup.SetClayLightPost(__instance); } [HarmonyPrefix] [HarmonyPatch(typeof(ZoneSystem), "ValidateVegetation")] private static void ValidateVegetation_Prefix(ZoneSystem __instance) { //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_009f: 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_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Expected O, but got Unknown //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_0125: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Unknown result type (might be due to invalid IL or missing references) //IL_0145: Unknown result type (might be due to invalid IL or missing references) //IL_0150: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Unknown result type (might be due to invalid IL or missing references) //IL_015b: Unknown result type (might be due to invalid IL or missing references) //IL_0166: 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_017c: Unknown result type (might be due to invalid IL or missing references) //IL_0188: Expected O, but got Unknown //IL_0193: Unknown result type (might be due to invalid IL or missing references) //IL_0198: Unknown result type (might be due to invalid IL or missing references) //IL_01ab: Unknown result type (might be due to invalid IL or missing references) //IL_01bb: Unknown result type (might be due to invalid IL or missing references) //IL_01cb: Unknown result type (might be due to invalid IL or missing references) //IL_01db: Unknown result type (might be due to invalid IL or missing references) //IL_01eb: Unknown result type (might be due to invalid IL or missing references) //IL_01f6: Unknown result type (might be due to invalid IL or missing references) //IL_01f9: Unknown result type (might be due to invalid IL or missing references) //IL_01fe: Unknown result type (might be due to invalid IL or missing references) //IL_0209: Unknown result type (might be due to invalid IL or missing references) //IL_0214: Unknown result type (might be due to invalid IL or missing references) //IL_021f: Unknown result type (might be due to invalid IL or missing references) //IL_022b: Expected O, but got Unknown foreach (ZoneVegetation resource in _resourceList) { __instance.m_vegetation.Remove(resource); } _resourceList.Clear(); ZoneVegetation item = new ZoneVegetation { m_enable = (Plugin._enableClay.Value == Toggle.On), m_groupRadius = Plugin._clayGroupRadius.Value, m_groupSizeMin = Plugin._clayGroupSizeMin.Value, m_groupSizeMax = Plugin._clayGroupSizeMax.Value, m_max = Plugin._clayMax.Value, m_chanceToUseGroundTilt = 1f, m_biome = (Biome)539, m_minAltitude = -0.5f, m_maxAltitude = 2f, m_maxTerrainDelta = 2f, m_prefab = PrefabsSetup._pickableClay }; _resourceList.Add(item); ZoneVegetation item2 = new ZoneVegetation { m_enable = (Plugin._enableClayBig.Value == Toggle.On), m_groupRadius = Plugin._clayBigGroupRadius.Value, m_groupSizeMin = Plugin._clayBigGroupSizeMin.Value, m_groupSizeMax = Plugin._clayBigGroupSizeMax.Value, m_max = Plugin._clayBigMax.Value, m_chanceToUseGroundTilt = 1f, m_biome = (Biome)539, m_minAltitude = -0.5f, m_maxAltitude = 2f, m_maxTerrainDelta = 2f, m_prefab = PrefabsSetup._clusterClay }; _resourceList.Add(item2); ZoneVegetation item3 = new ZoneVegetation { m_enable = (Plugin._enableReed.Value == Toggle.On), m_groupRadius = Plugin._reedGroupRadius.Value, m_groupSizeMin = Plugin._reedGroupSizeMin.Value, m_groupSizeMax = Plugin._reedGroupSizeMax.Value, m_max = Plugin._reedMax.Value, m_chanceToUseGroundTilt = 1f, m_biome = (Biome)9, m_minAltitude = -0.6f, m_maxAltitude = 1.8f, m_maxTerrainDelta = 2f, m_prefab = PrefabsSetup._pickableReed }; _resourceList.Add(item3); foreach (ZoneVegetation resource2 in _resourceList) { __instance.m_vegetation.Add(resource2); } } } public static class PrefabsSetup { public static AssetBundle _fineWoodBundle; private const string _clayMat = "BFP_Clay"; private const string _customHammer = "BFP_FineHammer"; private const string _strawMat = "BFP_Straw"; private const string _fineWoodMat = "FineWood"; private const string _bronzeNailsMat = "BronzeNails"; private const string _beechMat = "BeechSeeds"; public static GameObject _pickableClay; public static GameObject _clusterClay; public static GameObject _pickableReed; public static void Init() { _fineWoodBundle = PiecePrefabManager.RegisterAssetBundle("finewoodbundle"); Others(); HardPieces(); Misc(); Furniture(); WoodPieces(); Effects(); } private static void Others() { Item item = new Item(_fineWoodBundle, "BFP_FineHammer"); item.Crafting.Add(ItemManager.CraftingTable.Forge, 1); item.RequiredItems.Add("Bronze", 2); item.RequiredItems.Add("RoundLog", 1); item.RequiredUpgradeItems.Add("Bronze", 1); item.RequiredUpgradeItems.Add("RoundLog", 1); item.Configurable = Configurability.Full; ShaderReplacer.Replace(new Item(_fineWoodBundle, "BFP_Clay") { Configurable = Configurability.Disabled }.Prefab); ShaderReplacer.Replace(new Item(_fineWoodBundle, "BFP_Straw") { Configurable = Configurability.Disabled }.Prefab); BuildPiece buildPiece = new BuildPiece(_fineWoodBundle, "BFP_FineHammerRepair"); buildPiece.Crafting.Set(PieceManager.CraftingTable.None); buildPiece.Category.Set(BuildPieceCategory.All); buildPiece.Tool.Add("BFP_FineHammer"); buildPiece.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = true }; BuildPiece buildPiece2 = new BuildPiece(_fineWoodBundle, "BCP_ClayCollector"); buildPiece2.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece2.Category.Set("CollectorSeries"); buildPiece2.RequiredItems.Add("SurtlingCore", 5, recover: true); buildPiece2.RequiredItems.Add("Bronze", 12, recover: true); buildPiece2.RequiredItems.Add("RoundLog", 15, recover: true); buildPiece2.RequiredItems.Add("Stone", 22, recover: true); buildPiece.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; if (!Object.op_Implicit((Object)(object)buildPiece2.Prefab.GetComponent<ClayCollector>())) { buildPiece2.Prefab.AddComponent<ClayCollector>(); } ShaderReplacer.Replace(buildPiece2.Prefab); _pickableClay = PiecePrefabManager.RegisterPrefab(_fineWoodBundle, "BFP_Pickable_Clay"); ShaderReplacer.Replace(_pickableClay); _clusterClay = PiecePrefabManager.RegisterPrefab(_fineWoodBundle, "BFP_Pickable_ClayBig"); ShaderReplacer.Replace(_clusterClay); _pickableReed = PiecePrefabManager.RegisterPrefab(_fineWoodBundle, "BFP_Pickable_Reed"); ShaderReplacer.Replace(_pickableReed); } private static void Furniture() { BuildPiece buildPiece = new BuildPiece(_fineWoodBundle, "BFP_ArmorStand"); buildPiece.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece.Category.Set(BuildPieceCategory.Furniture); buildPiece.Tool.Add("BFP_FineHammer"); buildPiece.RequiredItems.Add("FineWood", 12, recover: true); buildPiece.RequiredItems.Add("BronzeNails", 6, recover: true); buildPiece.RequiredItems.Add("LeatherScraps", 4, recover: true); buildPiece.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece.Prefab); BuildPiece buildPiece2 = new BuildPiece(_fineWoodBundle, "BFP_Bench1"); buildPiece2.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece2.Category.Set(BuildPieceCategory.Furniture); buildPiece2.Tool.Add("BFP_FineHammer"); buildPiece2.RequiredItems.Add("FineWood", 16, recover: true); buildPiece2.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece2.Prefab); BuildPiece buildPiece3 = new BuildPiece(_fineWoodBundle, "BFP_Bench2"); buildPiece3.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece3.Category.Set(BuildPieceCategory.Furniture); buildPiece3.Tool.Add("BFP_FineHammer"); buildPiece3.RequiredItems.Add("FineWood", 24, recover: true); buildPiece3.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece3.Prefab); BuildPiece buildPiece4 = new BuildPiece(_fineWoodBundle, "BFP_Bench3"); buildPiece4.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece4.Category.Set(BuildPieceCategory.Furniture); buildPiece4.Tool.Add("BFP_FineHammer"); buildPiece4.RequiredItems.Add("FineWood", 12, recover: true); buildPiece4.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece4.Prefab); BuildPiece buildPiece5 = new BuildPiece(_fineWoodBundle, "BFP_Bench4"); buildPiece5.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece5.Category.Set(BuildPieceCategory.Furniture); buildPiece5.Tool.Add("BFP_FineHammer"); buildPiece5.RequiredItems.Add("Stone", 24, recover: true); buildPiece5.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece5.Prefab); BuildPiece buildPiece6 = new BuildPiece(_fineWoodBundle, "BFP_Bench5"); buildPiece6.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece6.Category.Set(BuildPieceCategory.Furniture); buildPiece6.Tool.Add("BFP_FineHammer"); buildPiece6.RequiredItems.Add("FineWood", 12, recover: true); buildPiece6.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece6.Prefab); BuildPiece buildPiece7 = new BuildPiece(_fineWoodBundle, "BFP_Bench6"); buildPiece7.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece7.Category.Set(BuildPieceCategory.Furniture); buildPiece7.Tool.Add("BFP_FineHammer"); buildPiece7.RequiredItems.Add("FineWood", 18, recover: true); buildPiece7.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece7.Prefab); BuildPiece buildPiece8 = new BuildPiece(_fineWoodBundle, "BFP_Bench7"); buildPiece8.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece8.Category.Set(BuildPieceCategory.Furniture); buildPiece8.Tool.Add("BFP_FineHammer"); buildPiece8.RequiredItems.Add("FineWood", 8, recover: true); buildPiece8.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece8.Prefab); BuildPiece buildPiece9 = new BuildPiece(_fineWoodBundle, "BFP_Bench8"); buildPiece9.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece9.Category.Set(BuildPieceCategory.Furniture); buildPiece9.Tool.Add("BFP_FineHammer"); buildPiece9.RequiredItems.Add("FineWood", 6, recover: true); buildPiece9.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece9.Prefab); BuildPiece buildPiece10 = new BuildPiece(_fineWoodBundle, "BFP_Bench9"); buildPiece10.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece10.Category.Set(BuildPieceCategory.Furniture); buildPiece10.Tool.Add("BFP_FineHammer"); buildPiece10.RequiredItems.Add("FineWood", 12, recover: true); buildPiece10.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece10.Prefab); BuildPiece buildPiece11 = new BuildPiece(_fineWoodBundle, "BFP_BronzeFrameChest"); buildPiece11.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece11.Category.Set(BuildPieceCategory.Furniture); buildPiece11.Tool.Add("BFP_FineHammer"); buildPiece11.RequiredItems.Add("FineWood", 8, recover: true); buildPiece11.RequiredItems.Add("Bronze", 4, recover: true); buildPiece11.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece11.Prefab); BuildPiece buildPiece12 = new BuildPiece(_fineWoodBundle, "BFP_Cabinet1"); buildPiece12.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece12.Category.Set(BuildPieceCategory.Furniture); buildPiece12.Tool.Add("BFP_FineHammer"); buildPiece12.RequiredItems.Add("FineWood", 42, recover: true); buildPiece12.RequiredItems.Add("BronzeNails", 12, recover: true); buildPiece12.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece12.Prefab); BuildPiece buildPiece13 = new BuildPiece(_fineWoodBundle, "BFP_Cabinet2"); buildPiece13.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece13.Category.Set(BuildPieceCategory.Furniture); buildPiece13.Tool.Add("BFP_FineHammer"); buildPiece13.RequiredItems.Add("FineWood", 42, recover: true); buildPiece13.RequiredItems.Add("BronzeNails", 12, recover: true); buildPiece13.RequiredItems.Add("Crystal", 2, recover: true); buildPiece13.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece13.Prefab); BuildPiece buildPiece14 = new BuildPiece(_fineWoodBundle, "BFP_Cabinet3"); buildPiece14.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece14.Category.Set(BuildPieceCategory.Furniture); buildPiece14.Tool.Add("BFP_FineHammer"); buildPiece14.RequiredItems.Add("FineWood", 21, recover: true); buildPiece14.RequiredItems.Add("BronzeNails", 6, recover: true); buildPiece14.RequiredItems.Add("Crystal", 1, recover: true); buildPiece14.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece14.Prefab); BuildPiece buildPiece15 = new BuildPiece(_fineWoodBundle, "BFP_Cabinet4"); buildPiece15.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece15.Category.Set(BuildPieceCategory.Furniture); buildPiece15.Tool.Add("BFP_FineHammer"); buildPiece15.RequiredItems.Add("FineWood", 36, recover: true); buildPiece15.RequiredItems.Add("BronzeNails", 16, recover: true); buildPiece15.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece15.Prefab); BuildPiece buildPiece16 = new BuildPiece(_fineWoodBundle, "BFP_Cabinet5"); buildPiece16.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece16.Category.Set(BuildPieceCategory.Furniture); buildPiece16.Tool.Add("BFP_FineHammer"); buildPiece16.RequiredItems.Add("FineWood", 36, recover: true); buildPiece16.RequiredItems.Add("BronzeNails", 16, recover: true); buildPiece16.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece16.Prefab); BuildPiece buildPiece17 = new BuildPiece(_fineWoodBundle, "BFP_Cabinet7"); buildPiece17.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece17.Category.Set(BuildPieceCategory.Furniture); buildPiece17.Tool.Add("BFP_FineHammer"); buildPiece17.RequiredItems.Add("FineWood", 16, recover: true); buildPiece17.RequiredItems.Add("BronzeNails", 8, recover: true); buildPiece17.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece17.Prefab); BuildPiece buildPiece18 = new BuildPiece(_fineWoodBundle, "BFP_ClayChest"); buildPiece18.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece18.Category.Set(BuildPieceCategory.Furniture); buildPiece18.Tool.Add("BFP_FineHammer"); buildPiece18.RequiredItems.Add("BFP_Clay", 10, recover: true); buildPiece18.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece18.Prefab); BuildPiece buildPiece19 = new BuildPiece(_fineWoodBundle, "BFP_Cupboard"); buildPiece19.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece19.Category.Set(BuildPieceCategory.Furniture); buildPiece19.Tool.Add("BFP_FineHammer"); buildPiece19.RequiredItems.Add("FineWood", 12, recover: true); buildPiece19.RequiredItems.Add("RoundLog", 2, recover: true); buildPiece19.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece19.Prefab); BuildPiece buildPiece20 = new BuildPiece(_fineWoodBundle, "BFP_FineWoodBasket"); buildPiece20.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece20.Category.Set(BuildPieceCategory.Furniture); buildPiece20.Tool.Add("BFP_FineHammer"); buildPiece20.RequiredItems.Add("FineWood", 4, recover: true); buildPiece20.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; BuildPiece buildPiece21 = new BuildPiece(_fineWoodBundle, "BFP_FineWoodBed1"); buildPiece21.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece21.Category.Set(BuildPieceCategory.Furniture); buildPiece21.Tool.Add("BFP_FineHammer"); buildPiece21.RequiredItems.Add("FineWood", 12, recover: true); buildPiece21.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece21.Prefab); BuildPiece buildPiece22 = new BuildPiece(_fineWoodBundle, "BFP_FineWoodBed2"); buildPiece22.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece22.Category.Set(BuildPieceCategory.Furniture); buildPiece22.Tool.Add("BFP_FineHammer"); buildPiece22.RequiredItems.Add("FineWood", 18, recover: true); buildPiece22.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece22.Prefab); BuildPiece buildPiece23 = new BuildPiece(_fineWoodBundle, "BFP_FineWoodChair1"); buildPiece23.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece23.Category.Set(BuildPieceCategory.Furniture); buildPiece23.Tool.Add("BFP_FineHammer"); buildPiece23.RequiredItems.Add("FineWood", 8, recover: true); buildPiece23.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece23.Prefab); BuildPiece buildPiece24 = new BuildPiece(_fineWoodBundle, "BFP_FineWoodChair2"); buildPiece24.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece24.Category.Set(BuildPieceCategory.Furniture); buildPiece24.Tool.Add("BFP_FineHammer"); buildPiece24.RequiredItems.Add("FineWood", 8, recover: true); buildPiece24.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece24.Prefab); BuildPiece buildPiece25 = new BuildPiece(_fineWoodBundle, "BFP_FineWoodChair3"); buildPiece25.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece25.Category.Set(BuildPieceCategory.Furniture); buildPiece25.Tool.Add("BFP_FineHammer"); buildPiece25.RequiredItems.Add("FineWood", 8, recover: true); buildPiece25.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece25.Prefab); BuildPiece buildPiece26 = new BuildPiece(_fineWoodBundle, "BFP_FineWoodChair4"); buildPiece26.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece26.Category.Set(BuildPieceCategory.Furniture); buildPiece26.Tool.Tools.Add("BFP_FineHammer"); buildPiece26.RequiredItems.Add("FineWood", 8, recover: true); buildPiece26.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece26.Prefab); BuildPiece buildPiece27 = new BuildPiece(_fineWoodBundle, "BFP_FineWoodChair5"); buildPiece27.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece27.Category.Set(BuildPieceCategory.Furniture); buildPiece27.Tool.Add("BFP_FineHammer"); buildPiece27.RequiredItems.Add("FineWood", 8, recover: true); buildPiece27.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece27.Prefab); BuildPiece buildPiece28 = new BuildPiece(_fineWoodBundle, "BFP_FineWoodChair6"); buildPiece28.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece28.Category.Set(BuildPieceCategory.Furniture); buildPiece28.Tool.Add("BFP_FineHammer"); buildPiece28.RequiredItems.Add("FineWood", 14, recover: true); buildPiece28.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece28.Prefab); BuildPiece buildPiece29 = new BuildPiece(_fineWoodBundle, "BFP_FineWoodChair7"); buildPiece29.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece29.Category.Set(BuildPieceCategory.Furniture); buildPiece29.Tool.Add("BFP_FineHammer"); buildPiece29.RequiredItems.Add("FineWood", 14, recover: true); buildPiece29.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece29.Prefab); BuildPiece buildPiece30 = new BuildPiece(_fineWoodBundle, "BFP_FineWoodDrawer1"); buildPiece30.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece30.Category.Set(BuildPieceCategory.Furniture); buildPiece30.Tool.Add("BFP_FineHammer"); buildPiece30.RequiredItems.Add("FineWood", 22, recover: true); buildPiece30.RequiredItems.Add("BronzeNails", 8, recover: true); buildPiece30.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece30.Prefab); BuildPiece buildPiece31 = new BuildPiece(_fineWoodBundle, "BFP_FineWoodDrawer2"); buildPiece31.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece31.Category.Set(BuildPieceCategory.Furniture); buildPiece31.Tool.Add("BFP_FineHammer"); buildPiece31.RequiredItems.Add("FineWood", 22, recover: true); buildPiece31.RequiredItems.Add("BronzeNails", 8, recover: true); buildPiece31.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece31.Prefab); BuildPiece buildPiece32 = new BuildPiece(_fineWoodBundle, "BFP_FineWoodDrawer3"); buildPiece32.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece32.Category.Set(BuildPieceCategory.Furniture); buildPiece32.Tool.Add("BFP_FineHammer"); buildPiece32.RequiredItems.Add("FineWood", 22, recover: true); buildPiece32.RequiredItems.Add("BronzeNails", 8, recover: true); buildPiece32.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece32.Prefab); BuildPiece buildPiece33 = new BuildPiece(_fineWoodBundle, "BFP_FineWoodDrawer4"); buildPiece33.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece33.Category.Set(BuildPieceCategory.Furniture); buildPiece33.Tool.Add("BFP_FineHammer"); buildPiece33.RequiredItems.Add("FineWood", 22, recover: true); buildPiece33.RequiredItems.Add("BronzeNails", 8, recover: true); buildPiece33.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece33.Prefab); BuildPiece buildPiece34 = new BuildPiece(_fineWoodBundle, "BFP_FineWoodDrawer5"); buildPiece34.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece34.Category.Set(BuildPieceCategory.Furniture); buildPiece34.Tool.Add("BFP_FineHammer"); buildPiece34.RequiredItems.Add("FineWood", 22, recover: true); buildPiece34.RequiredItems.Add("BronzeNails", 8, recover: true); buildPiece34.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece34.Prefab); BuildPiece buildPiece35 = new BuildPiece(_fineWoodBundle, "BFP_FineWoodStool"); buildPiece35.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece35.Category.Set(BuildPieceCategory.Furniture); buildPiece35.Tool.Add("BFP_FineHammer"); buildPiece35.RequiredItems.Add("FineWood", 6, recover: true); buildPiece35.RequiredItems.Add("BronzeNails", 4, recover: true); buildPiece35.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece35.Prefab); BuildPiece buildPiece36 = new BuildPiece(_fineWoodBundle, "BFP_FineWoodTable1"); buildPiece36.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece36.Category.Set(BuildPieceCategory.Furniture); buildPiece36.Tool.Add("BFP_FineHammer"); buildPiece36.RequiredItems.Add("FineWood", 14, recover: true); buildPiece36.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece36.Prefab); BuildPiece buildPiece37 = new BuildPiece(_fineWoodBundle, "BFP_FineWoodTable2"); buildPiece37.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece37.Category.Set(BuildPieceCategory.Furniture); buildPiece37.Tool.Add("BFP_FineHammer"); buildPiece37.RequiredItems.Add("FineWood", 14, recover: true); buildPiece37.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece37.Prefab); BuildPiece buildPiece38 = new BuildPiece(_fineWoodBundle, "BFP_FineWoodTable3"); buildPiece38.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece38.Category.Set(BuildPieceCategory.Furniture); buildPiece38.Tool.Add("BFP_FineHammer"); buildPiece38.RequiredItems.Add("FineWood", 14, recover: true); buildPiece38.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece38.Prefab); BuildPiece buildPiece39 = new BuildPiece(_fineWoodBundle, "BFP_FineWoodTable4"); buildPiece39.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece39.Category.Set(BuildPieceCategory.Furniture); buildPiece39.Tool.Add("BFP_FineHammer"); buildPiece39.RequiredItems.Add("FineWood", 14, recover: true); buildPiece39.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece39.Prefab); BuildPiece buildPiece40 = new BuildPiece(_fineWoodBundle, "BFP_FineWoodTable5"); buildPiece40.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece40.Category.Set(BuildPieceCategory.Furniture); buildPiece40.Tool.Add("BFP_FineHammer"); buildPiece40.RequiredItems.Add("FineWood", 14, recover: true); buildPiece40.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece40.Prefab); BuildPiece buildPiece41 = new BuildPiece(_fineWoodBundle, "BFP_FineWoodTable6"); buildPiece41.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece41.Category.Set(BuildPieceCategory.Furniture); buildPiece41.Tool.Add("BFP_FineHammer"); buildPiece41.RequiredItems.Add("FineWood", 14, recover: true); buildPiece41.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece41.Prefab); BuildPiece buildPiece42 = new BuildPiece(_fineWoodBundle, "BFP_FineWoodTable7"); buildPiece42.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece42.Category.Set(BuildPieceCategory.Furniture); buildPiece42.Tool.Add("BFP_FineHammer"); buildPiece42.RequiredItems.Add("FineWood", 14, recover: true); buildPiece42.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece42.Prefab); BuildPiece buildPiece43 = new BuildPiece(_fineWoodBundle, "BFP_FineWoodTable8"); buildPiece43.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece43.Category.Set(BuildPieceCategory.Furniture); buildPiece43.Tool.Add("BFP_FineHammer"); buildPiece43.RequiredItems.Add("FineWood", 14, recover: true); buildPiece43.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece43.Prefab); BuildPiece buildPiece44 = new BuildPiece(_fineWoodBundle, "BFP_FineWoodTable9"); buildPiece44.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece44.Category.Set(BuildPieceCategory.Furniture); buildPiece44.Tool.Add("BFP_FineHammer"); buildPiece44.RequiredItems.Add("FineWood", 14, recover: true); buildPiece44.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece44.Prefab); BuildPiece buildPiece45 = new BuildPiece(_fineWoodBundle, "BFP_LeatherBed"); buildPiece45.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece45.Category.Set(BuildPieceCategory.Furniture); buildPiece45.Tool.Add("BFP_FineHammer"); buildPiece45.RequiredItems.Add("FineWood", 14, recover: true); buildPiece45.RequiredItems.Add("LeatherScraps", 10, recover: true); buildPiece45.RequiredItems.Add("DeerHide", 12, recover: true); buildPiece45.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece45.Prefab); BuildPiece buildPiece46 = new BuildPiece(_fineWoodBundle, "BFP_LogChair"); buildPiece46.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece46.Category.Set(BuildPieceCategory.Furniture); buildPiece46.Tool.Add("BFP_FineHammer"); buildPiece46.RequiredItems.Add("FineWood", 6, recover: true); buildPiece46.RequiredItems.Add("RoundLog", 1, recover: true); buildPiece46.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece46.Prefab); BuildPiece buildPiece47 = new BuildPiece(_fineWoodBundle, "BFP_LongCrate"); buildPiece47.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece47.Category.Set(BuildPieceCategory.Furniture); buildPiece47.Tool.Add("BFP_FineHammer"); buildPiece47.RequiredItems.Add("FineWood", 12, recover: true); buildPiece47.RequiredItems.Add("Bronze", 4, recover: true); buildPiece47.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece47.Prefab); BuildPiece buildPiece48 = new BuildPiece(_fineWoodBundle, "BFP_LoxBed"); buildPiece48.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece48.Category.Set(BuildPieceCategory.Furniture); buildPiece48.Tool.Add("BFP_FineHammer"); buildPiece48.RequiredItems.Add("FineWood", 18, recover: true); buildPiece48.RequiredItems.Add("LinenThread", 10, recover: true); buildPiece48.RequiredItems.Add("LoxPelt", 8, recover: true); buildPiece48.RequiredItems.Add("WolfPelt", 4, recover: true); buildPiece48.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece48.Prefab); BuildPiece buildPiece49 = new BuildPiece(_fineWoodBundle, "BFP_LoxDoubleBed"); buildPiece49.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece49.Category.Set(BuildPieceCategory.Furniture); buildPiece49.Tool.Add("BFP_FineHammer"); buildPiece49.RequiredItems.Add("FineWood", 26, recover: true); buildPiece49.RequiredItems.Add("LinenThread", 22, recover: true); buildPiece49.RequiredItems.Add("LoxPelt", 16, recover: true); buildPiece49.RequiredItems.Add("WolfPelt", 8, recover: true); buildPiece49.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece49.Prefab); BuildPiece buildPiece50 = new BuildPiece(_fineWoodBundle, "BFP_MiniStool1"); buildPiece50.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece50.Category.Set(BuildPieceCategory.Furniture); buildPiece50.Tool.Add("BFP_FineHammer"); buildPiece50.RequiredItems.Add("FineWood", 6, recover: true); buildPiece50.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece50.Prefab); BuildPiece buildPiece51 = new BuildPiece(_fineWoodBundle, "BFP_MiniStool2"); buildPiece51.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece51.Category.Set(BuildPieceCategory.Furniture); buildPiece51.Tool.Add("BFP_FineHammer"); buildPiece51.RequiredItems.Add("FineWood", 6, recover: true); buildPiece51.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece51.Prefab); BuildPiece buildPiece52 = new BuildPiece(_fineWoodBundle, "BFP_MiniTable1"); buildPiece52.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece52.Category.Set(BuildPieceCategory.Furniture); buildPiece52.Tool.Add("BFP_FineHammer"); buildPiece52.RequiredItems.Add("FineWood", 28, recover: true); buildPiece52.RequiredItems.Add("Crystal", 3, recover: true); buildPiece52.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece52.Prefab); BuildPiece buildPiece53 = new BuildPiece(_fineWoodBundle, "BFP_MiniTable2"); buildPiece53.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece53.Category.Set(BuildPieceCategory.Furniture); buildPiece53.Tool.Add("BFP_FineHammer"); buildPiece53.RequiredItems.Add("FineWood", 22, recover: true); buildPiece53.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece53.Prefab); BuildPiece buildPiece54 = new BuildPiece(_fineWoodBundle, "BFP_MiniTable4"); buildPiece54.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece54.Category.Set(BuildPieceCategory.Furniture); buildPiece54.Tool.Add("BFP_FineHammer"); buildPiece54.RequiredItems.Add("FineWood", 16, recover: true); buildPiece54.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece54.Prefab); BuildPiece buildPiece55 = new BuildPiece(_fineWoodBundle, "BFP_PoolChair"); buildPiece55.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece55.Category.Set(BuildPieceCategory.Furniture); buildPiece55.Tool.Add("BFP_FineHammer"); buildPiece55.RequiredItems.Add("FineWood", 18, recover: true); buildPiece55.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece55.Prefab); BuildPiece buildPiece56 = new BuildPiece(_fineWoodBundle, "BFP_Stool1"); buildPiece56.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece56.Category.Set(BuildPieceCategory.Furniture); buildPiece56.Tool.Add("BFP_FineHammer"); buildPiece56.RequiredItems.Add("FineWood", 14, recover: true); buildPiece56.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece56.Prefab); BuildPiece buildPiece57 = new BuildPiece(_fineWoodBundle, "BFP_Stool2"); buildPiece57.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece57.Category.Set(BuildPieceCategory.Furniture); buildPiece57.Tool.Add("BFP_FineHammer"); buildPiece57.RequiredItems.Add("FineWood", 14, recover: true); buildPiece57.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece57.Prefab); } private static void HardPieces() { BuildPiece buildPiece = new BuildPiece(_fineWoodBundle, "BCP_Clay2_Roof45"); buildPiece.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece.Tool.Add("BFP_FineHammer"); buildPiece.RequiredItems.Add("BFP_Clay", 6, recover: true); buildPiece.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece.Prefab); BuildPiece buildPiece2 = new BuildPiece(_fineWoodBundle, "BCP_Clay2_Roof45_Corner"); buildPiece2.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece2.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece2.Tool.Add("BFP_FineHammer"); buildPiece2.RequiredItems.Add("BFP_Clay", 6, recover: true); buildPiece2.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece2.Prefab); BuildPiece buildPiece3 = new BuildPiece(_fineWoodBundle, "BCP_Clay2_Roof45_Corner2"); buildPiece3.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece3.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece3.Tool.Add("BFP_FineHammer"); buildPiece3.RequiredItems.Add("BFP_Clay", 6, recover: true); buildPiece3.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece3.Prefab); BuildPiece buildPiece4 = new BuildPiece(_fineWoodBundle, "BCP_Clay2_Roof45Arch"); buildPiece4.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece4.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece4.Tool.Add("BFP_FineHammer"); buildPiece4.RequiredItems.Add("BFP_Clay", 6, recover: true); buildPiece4.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece4.Prefab); BuildPiece buildPiece5 = new BuildPiece(_fineWoodBundle, "BCP_Clay2_Roof45Arch_Corner"); buildPiece5.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece5.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece5.Tool.Add("BFP_FineHammer"); buildPiece5.RequiredItems.Add("BFP_Clay", 6, recover: true); buildPiece5.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece5.Prefab); BuildPiece buildPiece6 = new BuildPiece(_fineWoodBundle, "BCP_Clay2_Roof45Arch_Corner2"); buildPiece6.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece6.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece6.Tool.Add("BFP_FineHammer"); buildPiece6.RequiredItems.Add("BFP_Clay", 6, recover: true); buildPiece6.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece6.Prefab); BuildPiece buildPiece7 = new BuildPiece(_fineWoodBundle, "BCP_ClayArch_Big"); buildPiece7.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece7.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece7.Tool.Add("BFP_FineHammer"); buildPiece7.RequiredItems.Add("BFP_Clay", 4, recover: true); buildPiece7.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece7.Prefab); BuildPiece buildPiece8 = new BuildPiece(_fineWoodBundle, "BCP_ClayArch_Bottom"); buildPiece8.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece8.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece8.Tool.Add("BFP_FineHammer"); buildPiece8.RequiredItems.Add("BFP_Clay", 4, recover: true); buildPiece8.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece8.Prefab); BuildPiece buildPiece9 = new BuildPiece(_fineWoodBundle, "BCP_ClayArch_Top"); buildPiece9.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece9.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece9.Tool.Add("BFP_FineHammer"); buildPiece9.RequiredItems.Add("BFP_Clay", 4, recover: true); buildPiece9.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece9.Prefab); BuildPiece buildPiece10 = new BuildPiece(_fineWoodBundle, "BCP_ClayBeam1m"); buildPiece10.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece10.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece10.Tool.Add("BFP_FineHammer"); buildPiece10.RequiredItems.Add("BFP_Clay", 1, recover: true); buildPiece10.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece10.Prefab); BuildPiece buildPiece11 = new BuildPiece(_fineWoodBundle, "BCP_ClayBeam2m"); buildPiece11.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece11.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece11.Tool.Add("BFP_FineHammer"); buildPiece11.RequiredItems.Add("BFP_Clay", 2, recover: true); buildPiece11.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece11.Prefab); BuildPiece buildPiece12 = new BuildPiece(_fineWoodBundle, "BCP_ClayDeco_Floor"); buildPiece12.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece12.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece12.Tool.Add("BFP_FineHammer"); buildPiece12.RequiredItems.Add("BFP_Clay", 6, recover: true); buildPiece12.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece12.Prefab); BuildPiece buildPiece13 = new BuildPiece(_fineWoodBundle, "BCP_ClayDecoWall_2x2"); buildPiece13.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece13.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece13.Tool.Add("BFP_FineHammer"); buildPiece13.RequiredItems.Add("BFP_Clay", 6, recover: true); buildPiece13.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece13.Prefab); BuildPiece buildPiece14 = new BuildPiece(_fineWoodBundle, "BCP_ClayDecoWall_Divider"); buildPiece14.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece14.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece14.Tool.Add("BFP_FineHammer"); buildPiece14.RequiredItems.Add("BFP_Clay", 4, recover: true); buildPiece14.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece14.Prefab); BuildPiece buildPiece15 = new BuildPiece(_fineWoodBundle, "BCP_ClayDecoWall_Tree"); buildPiece15.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece15.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece15.Tool.Add("BFP_FineHammer"); buildPiece15.RequiredItems.Add("BFP_Clay", 4, recover: true); buildPiece15.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece15.Prefab); BuildPiece buildPiece16 = new BuildPiece(_fineWoodBundle, "BCP_ClayFloor_1x1"); buildPiece16.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece16.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece16.Tool.Add("BFP_FineHammer"); buildPiece16.RequiredItems.Add("BFP_Clay", 2, recover: true); buildPiece16.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece16.Prefab); BuildPiece buildPiece17 = new BuildPiece(_fineWoodBundle, "BCP_ClayFloor_2x2"); buildPiece17.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece17.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece17.Tool.Add("BFP_FineHammer"); buildPiece17.RequiredItems.Add("BFP_Clay", 4, recover: true); buildPiece17.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece17.Prefab); BuildPiece buildPiece18 = new BuildPiece(_fineWoodBundle, "BCP_ClayHalfWall_1x2"); buildPiece18.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece18.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece18.Tool.Add("BFP_FineHammer"); buildPiece18.RequiredItems.Add("BFP_Clay", 2, recover: true); buildPiece18.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece18.Prefab); BuildPiece buildPiece19 = new BuildPiece(_fineWoodBundle, "BCP_ClayLadder"); buildPiece19.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece19.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece19.Tool.Add("BFP_FineHammer"); buildPiece19.RequiredItems.Add("BFP_Clay", 6, recover: true); buildPiece19.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece19.Prefab); BuildPiece buildPiece20 = new BuildPiece(_fineWoodBundle, "BCP_ClayPillarArch"); buildPiece20.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece20.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece20.Tool.Add("BFP_FineHammer"); buildPiece20.RequiredItems.Add("BFP_Clay", 6, recover: true); buildPiece20.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece20.Prefab); BuildPiece buildPiece21 = new BuildPiece(_fineWoodBundle, "BCP_ClayPillarArch_Small"); buildPiece21.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece21.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece21.Tool.Add("BFP_FineHammer"); buildPiece21.RequiredItems.Add("BFP_Clay", 4, recover: true); buildPiece21.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece21.Prefab); BuildPiece buildPiece22 = new BuildPiece(_fineWoodBundle, "BCP_ClayPillarBase_Medium"); buildPiece22.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece22.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece22.Tool.Add("BFP_FineHammer"); buildPiece22.RequiredItems.Add("BFP_Clay", 5, recover: true); buildPiece22.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece22.Prefab); BuildPiece buildPiece23 = new BuildPiece(_fineWoodBundle, "BCP_ClayPillarBase_Small"); buildPiece23.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece23.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece23.Tool.Add("BFP_FineHammer"); buildPiece23.RequiredItems.Add("BFP_Clay", 4, recover: true); buildPiece23.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece23.Prefab); BuildPiece buildPiece24 = new BuildPiece(_fineWoodBundle, "BCP_ClayPillarBase_Tapered"); buildPiece24.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece24.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece24.Tool.Add("BFP_FineHammer"); buildPiece24.RequiredItems.Add("BFP_Clay", 6, recover: true); buildPiece24.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece24.Prefab); BuildPiece buildPiece25 = new BuildPiece(_fineWoodBundle, "BCP_ClayPillarBase_TaperedInverted"); buildPiece25.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece25.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece25.Tool.Add("BFP_FineHammer"); buildPiece25.RequiredItems.Add("BFP_Clay", 6, recover: true); buildPiece25.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece25.Prefab); BuildPiece buildPiece26 = new BuildPiece(_fineWoodBundle, "BCP_ClayPillarBeam_Medium"); buildPiece26.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece26.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece26.Tool.Add("BFP_FineHammer"); buildPiece26.RequiredItems.Add("BFP_Clay", 6, recover: true); buildPiece26.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece26.Prefab); BuildPiece buildPiece27 = new BuildPiece(_fineWoodBundle, "BCP_ClayPillarBeam_Small"); buildPiece27.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece27.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece27.Tool.Add("BFP_FineHammer"); buildPiece27.RequiredItems.Add("BFP_Clay", 4, recover: true); buildPiece27.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece27.Prefab); BuildPiece buildPiece28 = new BuildPiece(_fineWoodBundle, "BCP_ClayPole1m"); buildPiece28.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece28.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece28.Tool.Add("BFP_FineHammer"); buildPiece28.RequiredItems.Add("BFP_Clay", 1, recover: true); buildPiece28.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece28.Prefab); BuildPiece buildPiece29 = new BuildPiece(_fineWoodBundle, "BCP_ClayPole_2m"); buildPiece29.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece29.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece29.Tool.Add("BFP_FineHammer"); buildPiece29.RequiredItems.Add("BFP_Clay", 2, recover: true); buildPiece29.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece29.Prefab); BuildPiece buildPiece30 = new BuildPiece(_fineWoodBundle, "BCP_ClayQuarterWall_1x1"); buildPiece30.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece30.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece30.Tool.Add("BFP_FineHammer"); buildPiece30.RequiredItems.Add("BFP_Clay", 1, recover: true); buildPiece30.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece30.Prefab); BuildPiece buildPiece31 = new BuildPiece(_fineWoodBundle, "BCP_ClayRoundDoor"); buildPiece31.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece31.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece31.Tool.Add("BFP_FineHammer"); buildPiece31.RequiredItems.Add("BFP_Clay", 12, recover: true); buildPiece31.RequiredItems.Add("Copper", 8, recover: true); buildPiece31.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece31.Prefab); BuildPiece buildPiece32 = new BuildPiece(_fineWoodBundle, "BCP_ClayStair2"); buildPiece32.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece32.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece32.Tool.Add("BFP_FineHammer"); buildPiece32.RequiredItems.Add("BFP_Clay", 6, recover: true); buildPiece32.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece32.Prefab); BuildPiece buildPiece33 = new BuildPiece(_fineWoodBundle, "BCP_ClayWall1x2"); buildPiece33.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece33.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece33.Tool.Add("BFP_FineHammer"); buildPiece33.RequiredItems.Add("BFP_Clay", 3, recover: true); buildPiece33.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece33.Prefab); BuildPiece buildPiece34 = new BuildPiece(_fineWoodBundle, "BCP_ClayWall2x2"); buildPiece34.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece34.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece34.Tool.Add("BFP_FineHammer"); buildPiece34.RequiredItems.Add("BFP_Clay", 4, recover: true); buildPiece34.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece34.Prefab); BuildPiece buildPiece35 = new BuildPiece(_fineWoodBundle, "BCP_ClayWall4x2"); buildPiece35.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece35.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece35.Tool.Add("BFP_FineHammer"); buildPiece35.RequiredItems.Add("BFP_Clay", 6, recover: true); buildPiece35.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece35.Prefab); BuildPiece buildPiece36 = new BuildPiece(_fineWoodBundle, "BCP_ClayWall_2x2"); buildPiece36.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece36.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece36.Tool.Add("BFP_FineHammer"); buildPiece36.RequiredItems.Add("BFP_Clay", 4, recover: true); buildPiece36.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece36.Prefab); BuildPiece buildPiece37 = new BuildPiece(_fineWoodBundle, "BCP_ClayWall_Arch"); buildPiece37.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece37.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece37.Tool.Add("BFP_FineHammer"); buildPiece37.RequiredItems.Add("BFP_Clay", 3, recover: true); buildPiece37.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece37.Prefab); BuildPiece buildPiece38 = new BuildPiece(_fineWoodBundle, "BCP_ClayWall_Arch2"); buildPiece38.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece38.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece38.Tool.Add("BFP_FineHammer"); buildPiece38.RequiredItems.Add("BFP_Clay", 3, recover: true); buildPiece38.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece38.Prefab); BuildPiece buildPiece39 = new BuildPiece(_fineWoodBundle, "BCP_ClayWall_ArchInverted"); buildPiece39.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece39.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece39.Tool.Add("BFP_FineHammer"); buildPiece39.RequiredItems.Add("BFP_Clay", 3, recover: true); buildPiece39.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece39.Prefab); BuildPiece buildPiece40 = new BuildPiece(_fineWoodBundle, "BCP_ClayWall_Beam26"); buildPiece40.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece40.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece40.Tool.Add("BFP_FineHammer"); buildPiece40.RequiredItems.Add("BFP_Clay", 2, recover: true); buildPiece40.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece40.Prefab); BuildPiece buildPiece41 = new BuildPiece(_fineWoodBundle, "BCP_ClayWall_Beam26Alt"); buildPiece41.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece41.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece41.Tool.Add("BFP_FineHammer"); buildPiece41.RequiredItems.Add("BFP_Clay", 2, recover: true); buildPiece41.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece41.Prefab); BuildPiece buildPiece42 = new BuildPiece(_fineWoodBundle, "BCP_ClayWall_Beam45"); buildPiece42.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece42.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece42.Tool.Add("BFP_FineHammer"); buildPiece42.RequiredItems.Add("BFP_Clay", 2, recover: true); buildPiece42.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece42.Prefab); BuildPiece buildPiece43 = new BuildPiece(_fineWoodBundle, "BCP_ClayWall_Beam45Alt"); buildPiece43.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece43.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece43.Tool.Add("BFP_FineHammer"); buildPiece43.RequiredItems.Add("BFP_Clay", 2, recover: true); buildPiece43.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece43.Prefab); BuildPiece buildPiece44 = new BuildPiece(_fineWoodBundle, "BCP_ClayWall_Cross26"); buildPiece44.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece44.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece44.Tool.Add("BFP_FineHammer"); buildPiece44.RequiredItems.Add("BFP_Clay", 3, recover: true); buildPiece44.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece44.Prefab); BuildPiece buildPiece45 = new BuildPiece(_fineWoodBundle, "BCP_ClayWall_Cross26Alt"); buildPiece45.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece45.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece45.Tool.Add("BFP_FineHammer"); buildPiece45.RequiredItems.Add("BFP_Clay", 3, recover: true); buildPiece45.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece45.Prefab); BuildPiece buildPiece46 = new BuildPiece(_fineWoodBundle, "BCP_ClayWall_Cross45"); buildPiece46.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece46.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece46.Tool.Add("BFP_FineHammer"); buildPiece46.RequiredItems.Add("BFP_Clay", 3, recover: true); buildPiece46.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece46.Prefab); BuildPiece buildPiece47 = new BuildPiece(_fineWoodBundle, "BCP_ClayWall_Cross45Alt"); buildPiece47.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece47.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece47.Tool.Add("BFP_FineHammer"); buildPiece47.RequiredItems.Add("BFP_Clay", 3, recover: true); buildPiece47.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece47.Prefab); BuildPiece buildPiece48 = new BuildPiece(_fineWoodBundle, "BCP_ClayWall_Roof26"); buildPiece48.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece48.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece48.Tool.Add("BFP_FineHammer"); buildPiece48.RequiredItems.Add("BFP_Clay", 2, recover: true); buildPiece48.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece48.Prefab); BuildPiece buildPiece49 = new BuildPiece(_fineWoodBundle, "BCP_ClayWall_Roof26UpsideDown"); buildPiece49.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece49.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece49.Tool.Add("BFP_FineHammer"); buildPiece49.RequiredItems.Add("BFP_Clay", 2, recover: true); buildPiece49.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece49.Prefab); BuildPiece buildPiece50 = new BuildPiece(_fineWoodBundle, "BCP_ClayWall_Roof45"); buildPiece50.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece50.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece50.Tool.Add("BFP_FineHammer"); buildPiece50.RequiredItems.Add("BFP_Clay", 2, recover: true); buildPiece50.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece50.Prefab); BuildPiece buildPiece51 = new BuildPiece(_fineWoodBundle, "BCP_ClayWall_Roof45UpsideDown"); buildPiece51.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece51.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece51.Tool.Add("BFP_FineHammer"); buildPiece51.RequiredItems.Add("BFP_Clay", 2, recover: true); buildPiece51.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece51.Prefab); BuildPiece buildPiece52 = new BuildPiece(_fineWoodBundle, "BCP_ClayWindow2x2"); buildPiece52.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece52.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece52.Tool.Add("BFP_FineHammer"); buildPiece52.RequiredItems.Add("BFP_Clay", 4, recover: true); buildPiece52.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece52.Prefab); BuildPiece buildPiece53 = new BuildPiece(_fineWoodBundle, "BCP_ClayWindow4x2"); buildPiece53.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece53.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece53.Tool.Add("BFP_FineHammer"); buildPiece53.RequiredItems.Add("BFP_Clay", 8, recover: true); buildPiece53.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece53.Prefab); BuildPiece buildPiece54 = new BuildPiece(_fineWoodBundle, "BFP_ClayArch"); buildPiece54.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece54.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece54.Tool.Add("BFP_FineHammer"); buildPiece54.RequiredItems.Add("BFP_Clay", 4, recover: true); buildPiece54.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece54.Prefab); BuildPiece buildPiece55 = new BuildPiece(_fineWoodBundle, "BFP_ClayArch2"); buildPiece55.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece55.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece55.Tool.Add("BFP_FineHammer"); buildPiece55.RequiredItems.Add("BFP_Clay", 4, recover: true); buildPiece55.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece55.Prefab); BuildPiece buildPiece56 = new BuildPiece(_fineWoodBundle, "BFP_ClayBase1"); buildPiece56.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece56.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece56.Tool.Add("BFP_FineHammer"); buildPiece56.RequiredItems.Add("BFP_Clay", 3, recover: true); buildPiece56.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece56.Prefab); BuildPiece buildPiece57 = new BuildPiece(_fineWoodBundle, "BFP_ClayBase2"); buildPiece57.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece57.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece57.Tool.Add("BFP_FineHammer"); buildPiece57.RequiredItems.Add("BFP_Clay", 3, recover: true); buildPiece57.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece57.Prefab); BuildPiece buildPiece58 = new BuildPiece(_fineWoodBundle, "BFP_ClayBaseCorner"); buildPiece58.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece58.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece58.Tool.Add("BFP_FineHammer"); buildPiece58.RequiredItems.Add("BFP_Clay", 3, recover: true); buildPiece58.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece58.Prefab); BuildPiece buildPiece59 = new BuildPiece(_fineWoodBundle, "BFP_ClayBlock1x1"); buildPiece59.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece59.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece59.Tool.Add("BFP_FineHammer"); buildPiece59.RequiredItems.Add("BFP_Clay", 2, recover: true); buildPiece59.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece59.Prefab); BuildPiece buildPiece60 = new BuildPiece(_fineWoodBundle, "BFP_ClayBlock2x1x1"); buildPiece60.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece60.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece60.Tool.Add("BFP_FineHammer"); buildPiece60.RequiredItems.Add("BFP_Clay", 2, recover: true); buildPiece60.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece60.Prefab); BuildPiece buildPiece61 = new BuildPiece(_fineWoodBundle, "BFP_ClayBlock2x2_Enforced"); buildPiece61.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece61.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece61.Tool.Add("BFP_FineHammer"); buildPiece61.RequiredItems.Add("BFP_Clay", 4, recover: true); buildPiece61.RequiredItems.Add("Copper", 2, recover: true); buildPiece61.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece61.Prefab); BuildPiece buildPiece62 = new BuildPiece(_fineWoodBundle, "BFP_ClayBlock2x2x1"); buildPiece62.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece62.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece62.Tool.Add("BFP_FineHammer"); buildPiece62.RequiredItems.Add("BFP_Clay", 6, recover: true); buildPiece62.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece62.Prefab); BuildPiece buildPiece63 = new BuildPiece(_fineWoodBundle, "BFP_ClayBlock2x2x2"); buildPiece63.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece63.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece63.Tool.Add("BFP_FineHammer"); buildPiece63.RequiredItems.Add("BFP_Clay", 4, recover: true); buildPiece63.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece63.Prefab); BuildPiece buildPiece64 = new BuildPiece(_fineWoodBundle, "BFP_ClayBlock_OutCorner"); buildPiece64.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece64.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece64.Tool.Add("BFP_FineHammer"); buildPiece64.RequiredItems.Add("BFP_Clay", 3, recover: true); buildPiece64.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece64.Prefab); BuildPiece buildPiece65 = new BuildPiece(_fineWoodBundle, "BFP_ClayBlock_SlopeInverted1x2"); buildPiece65.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece65.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece65.Tool.Add("BFP_FineHammer"); buildPiece65.RequiredItems.Add("BFP_Clay", 2, recover: true); buildPiece65.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece65.Prefab); BuildPiece buildPiece66 = new BuildPiece(_fineWoodBundle, "BFP_ClayBlockOut1"); buildPiece66.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece66.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece66.Tool.Add("BFP_FineHammer"); buildPiece66.RequiredItems.Add("BFP_Clay", 3, recover: true); buildPiece66.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece66.Prefab); BuildPiece buildPiece67 = new BuildPiece(_fineWoodBundle, "BFP_ClayBlockOut2"); buildPiece67.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece67.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece67.Tool.Add("BFP_FineHammer"); buildPiece67.RequiredItems.Add("BFP_Clay", 3, recover: true); buildPiece67.SpecialProperties = new SpecialProperties { AdminOnly = false, NoConfig = false }; ShaderReplacer.Replace(buildPiece67.Prefab); BuildPiece buildPiece68 = new BuildPiece(_fineWoodBundle, "BFP_ClayBlockSlope1x2"); buildPiece68.Crafting.Set(PieceManager.CraftingTable.Workbench); buildPiece68.Category.Set(BuildPieceCategory.BuildingStonecutter); buildPiece68.Tool.Add("BFP_FineHammer"); buildPiece68.RequiredItems.Add("BFP_Clay", 2, recover: true); buildPiece68.SpecialPro