From 41aead008b6360d5bcd9ec7582d4f5227870e88e Mon Sep 17 00:00:00 2001 From: thehun927 Date: Mon, 18 May 2026 23:44:17 -0400 Subject: [PATCH] multiplayer guards - config file for logging started --- AbsorbentSoil/Config/AbsorbentSoilConfig.cs | 25 ++++++++++++++++++ AbsorbentSoil/Helpers/RuntimeSafetyHelper.cs | 12 +++++++++ .../Patches/PlantAdditiveAppliedPatch.cs | 3 +++ .../Patches/PotHarvestDestroyPatches.cs | 3 +++ .../Patches/PourSoilTaskOnInitialPourPatch.cs | 3 +++ AbsorbentSoil/State/SoilHelper.cs | 6 +++++ .../bin/Release/net6.0/AbsorbentSoil.pdb | Bin 26416 -> 26592 bytes .../net6.0/AbsorbentSoil.AssemblyInfo.cs | 2 +- .../AbsorbentSoil.AssemblyInfoInputs.cache | 2 +- ...sorbentSoil.csproj.CoreCompileInputs.cache | 2 +- .../obj/Release/net6.0/AbsorbentSoil.dll | Bin 22528 -> 22528 bytes .../obj/Release/net6.0/AbsorbentSoil.pdb | Bin 26416 -> 26592 bytes .../obj/Release/net6.0/ref/AbsorbentSoil.dll | Bin 9728 -> 9728 bytes .../Release/net6.0/refint/AbsorbentSoil.dll | Bin 9728 -> 9728 bytes 14 files changed, 55 insertions(+), 3 deletions(-) create mode 100644 AbsorbentSoil/Config/AbsorbentSoilConfig.cs create mode 100644 AbsorbentSoil/Helpers/RuntimeSafetyHelper.cs diff --git a/AbsorbentSoil/Config/AbsorbentSoilConfig.cs b/AbsorbentSoil/Config/AbsorbentSoilConfig.cs new file mode 100644 index 0000000..69274d2 --- /dev/null +++ b/AbsorbentSoil/Config/AbsorbentSoilConfig.cs @@ -0,0 +1,25 @@ +using MelonLoader; + +namespace AbsorbentSoil.Config +{ + internal static class AbsorbentSoilConfig + { + private static MelonPreferences_Category Category; + private static MelonPreferences_Entry VerboseLoggingEntry; + + public static bool VerboseLogging => VerboseLoggingEntry?.Value ?? false; + + public static void Init() + { + Category = MelonPreferences.CreateCategory("AbsorbentSoil"); + + VerboseLoggingEntry = Category.CreateEntry( + "VerboseLogging", + false, + "Verbose Logging", + "Enable detailed troubleshooting logs for Absorbent Soil."); + + Category.SaveToFile(false); + } + } +} \ No newline at end of file diff --git a/AbsorbentSoil/Helpers/RuntimeSafetyHelper.cs b/AbsorbentSoil/Helpers/RuntimeSafetyHelper.cs new file mode 100644 index 0000000..7237906 --- /dev/null +++ b/AbsorbentSoil/Helpers/RuntimeSafetyHelper.cs @@ -0,0 +1,12 @@ +using Il2CppScheduleOne.Persistence; +using MelonLoader; + +internal static class RuntimeSafety +{ + public static bool CanMutateState() + { + // Single-player usually passes. + // In multiplayer, this should ideally be host/server only. + return true; + } +} \ No newline at end of file diff --git a/AbsorbentSoil/Patches/PlantAdditiveAppliedPatch.cs b/AbsorbentSoil/Patches/PlantAdditiveAppliedPatch.cs index c9440d5..4c77e18 100644 --- a/AbsorbentSoil/Patches/PlantAdditiveAppliedPatch.cs +++ b/AbsorbentSoil/Patches/PlantAdditiveAppliedPatch.cs @@ -12,6 +12,9 @@ namespace AbsorbentSoil { public static void Postfix(Plant __instance, AdditiveDefinition additive, bool isInitialApplication) { + if (!RuntimeSafety.CanMutateState()) + return; + if (__instance == null || additive == null) return; diff --git a/AbsorbentSoil/Patches/PotHarvestDestroyPatches.cs b/AbsorbentSoil/Patches/PotHarvestDestroyPatches.cs index 6640dc2..4c7616b 100644 --- a/AbsorbentSoil/Patches/PotHarvestDestroyPatches.cs +++ b/AbsorbentSoil/Patches/PotHarvestDestroyPatches.cs @@ -35,6 +35,9 @@ namespace AbsorbentSoil { public static void Prefix(Pot __instance) { + if (!RuntimeSafety.CanMutateState()) + return; + // If the pot itself is destroyed/sold, stop tracking its additives. try { diff --git a/AbsorbentSoil/Patches/PourSoilTaskOnInitialPourPatch.cs b/AbsorbentSoil/Patches/PourSoilTaskOnInitialPourPatch.cs index b11c28b..1679b32 100644 --- a/AbsorbentSoil/Patches/PourSoilTaskOnInitialPourPatch.cs +++ b/AbsorbentSoil/Patches/PourSoilTaskOnInitialPourPatch.cs @@ -14,6 +14,9 @@ namespace AbsorbentSoil { private static unsafe void Postfix(PourSoilTask __instance) { + if (!RuntimeSafety.CanMutateState()) + return; + try { nint basePtr = (nint)IL2CPP.Il2CppObjectBaseToPtrNotNull(__instance); diff --git a/AbsorbentSoil/State/SoilHelper.cs b/AbsorbentSoil/State/SoilHelper.cs index 9408b69..89d2b17 100644 --- a/AbsorbentSoil/State/SoilHelper.cs +++ b/AbsorbentSoil/State/SoilHelper.cs @@ -11,6 +11,9 @@ namespace AbsorbentSoil public static int DecrementRemainingSoilUses(Pot pot) { + if (!RuntimeSafety.CanMutateState()) + return 0; + if (pot == null) return 0; @@ -28,6 +31,9 @@ namespace AbsorbentSoil public static void SetRemainingSoilUses(Pot pot, int uses) { + if (!RuntimeSafety.CanMutateState()) + return; + if (pot == null) return; diff --git a/AbsorbentSoil/bin/Release/net6.0/AbsorbentSoil.pdb b/AbsorbentSoil/bin/Release/net6.0/AbsorbentSoil.pdb index 909799c047fade767a53f16a0a53c31988a448a1..9450a95746a53bed0bcfc6bfb1231bdfb8400cc6 100644 GIT binary patch delta 2820 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 X%6Js-_FE52yQU0=Zu?IbFVp@X8_?>N delta 5214 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 diff --git a/AbsorbentSoil/obj/Release/net6.0/AbsorbentSoil.pdb b/AbsorbentSoil/obj/Release/net6.0/AbsorbentSoil.pdb index 909799c047fade767a53f16a0a53c31988a448a1..9450a95746a53bed0bcfc6bfb1231bdfb8400cc6 100644 GIT binary patch delta 2820 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 uR+F!aBAxWRURZ+_w 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 uR+F!aBAxWR