The BepInEx console will not appear when launching like it does for other games on Thunderstore (you can turn it back on in your BepInEx.cfg file). If your PEAK crashes on startup, add -dx12 to your launch parameters.
Decompiled source of RemoveCampfireRestriction v0.0.2
BepInEx/plugins/com.keklick1337.peak.RemoveCampfireRestriction.dll
Decompiled 4 months agousing System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using Photon.Pun; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: IgnoresAccessChecksTo("Assembly-CSharp")] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("com.keklick1337.peak.RemoveCampfireRestriction")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("0.0.2.0")] [assembly: AssemblyInformationalVersion("0.0.2+77c14d6b1f537c9ac6213d709c37dfe30ef99822")] [assembly: AssemblyProduct("com.keklick1337.peak.RemoveCampfireRestriction")] [assembly: AssemblyTitle("Remove Campfire Restriction")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.2.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace BepInEx { [AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)] [Conditional("CodeGeneration")] internal sealed class BepInAutoPluginAttribute : Attribute { public BepInAutoPluginAttribute(string? id = null, string? name = null, string? version = null) { } } } namespace BepInEx.Preloader.Core.Patching { [AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)] [Conditional("CodeGeneration")] internal sealed class PatcherAutoPluginAttribute : Attribute { public PatcherAutoPluginAttribute(string? id = null, string? name = null, string? version = null) { } } } namespace RemoveCampfireRestriction { [BepInProcess("PEAK.exe")] [BepInPlugin("com.keklick1337.peak.RemoveCampfireRestriction", "Remove Campfire Restriction", "0.0.2")] public class Plugin : BaseUnityPlugin { public const string Id = "com.keklick1337.peak.RemoveCampfireRestriction"; internal static ManualLogSource Log { get; private set; } internal static Plugin Instance { get; private set; } public static string Name => "Remove Campfire Restriction"; public static string Version => "0.0.2"; private void Awake() { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Expected O, but got Unknown Instance = this; Log = ((BaseUnityPlugin)this).Logger; Log.LogInfo((object)"Remove Campfire Restriction Plugin loaded!"); Debug.Log((object)"[RemoveCampfireRestriction] Plugin loaded!"); try { Harmony val = new Harmony("com.keklick1337.peak.RemoveCampfireRestriction"); val.PatchAll(Assembly.GetExecutingAssembly()); Log.LogInfo((object)"Harmony patches applied successfully!"); Debug.Log((object)"[RemoveCampfireRestriction] Harmony patches applied successfully!"); } catch (Exception ex) { Log.LogError((object)("Failed to apply Harmony patches: " + ex.Message)); Debug.LogError((object)("[RemoveCampfireRestriction] Failed to apply Harmony patches: " + ex.Message)); } } } [HarmonyPatch(typeof(Campfire), "EveryoneInRange")] public class CampfireEveryoneInRangePatch { private static bool Prefix(Campfire __instance, out string printout, ref bool __result) { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) printout = ""; try { foreach (Character allPlayerCharacter in PlayerHandler.GetAllPlayerCharacters()) { float num = Vector3.Distance(((Component)__instance).transform.position, allPlayerCharacter.Center); if (num > 15f && !allPlayerCharacter.data.dead) { printout += $"\n{((MonoBehaviourPun)allPlayerCharacter).photonView.Owner.NickName} {Mathf.RoundToInt(num * CharacterStats.unitsToMeters)}m"; } } if (!string.IsNullOrEmpty(printout)) { printout = "other players location:" + printout; } } catch (Exception ex) { Plugin.Log.LogError((object)("Error in CampfireEveryoneInRangePatch: " + ex.Message)); } __result = true; return false; } } [HarmonyPatch(typeof(Campfire), "Interact_CastFinished")] public class CampfireInteractCastFinishedPatch { private static bool Prefix(Campfire __instance, Character interactor) { try { if (__instance.Lit) { if ((Object)(object)__instance.currentlyCookingItem != (Object)null) { ((Component)__instance.currentlyCookingItem).GetComponent<ItemCooking>().FinishCooking(); } return false; } if (!__instance.Lit && __instance.FireWoodCount >= __instance.requiredFireWoods) { PhotonView component = ((Component)__instance).GetComponent<PhotonView>(); if ((Object)(object)component != (Object)null) { component.RPC("Light_Rpc", (RpcTarget)3, Array.Empty<object>()); Plugin.Log.LogInfo((object)"Campfire lit successfully!"); } } return false; } catch (Exception ex) { Plugin.Log.LogError((object)("Error in CampfireInteractCastFinishedPatch: " + ex.Message)); return true; } } } [HarmonyPatch(typeof(Campfire), "GetInteractionText")] public class CampfireGetInteractionTextPatch { private static bool Prefix(Campfire __instance, ref string __result) { try { if (__instance.FireWoodCount >= __instance.requiredFireWoods && !__instance.Lit) { string text = default(string); __instance.EveryoneInRange(ref text); if (!string.IsNullOrEmpty(text)) { __result = "light\n" + text; } else { __result = "light"; } return false; } if (__instance.Lit) { __result = "cook"; return false; } __result = ""; return false; } catch (Exception ex) { Plugin.Log.LogError((object)("Error in CampfireGetInteractionTextPatch: " + ex.Message)); return true; } } } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } }