Decompiled source of FineWoodPieces v1.6.5
FineWoodPieces.dll
Decompiled a month 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