diff --git a/project/Aki.Core/AkiCorePlugin.cs b/project/Aki.Core/AkiCorePlugin.cs
index 5973e10..a27100b 100644
--- a/project/Aki.Core/AkiCorePlugin.cs
+++ b/project/Aki.Core/AkiCorePlugin.cs
@@ -1,12 +1,7 @@
using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
using Aki.Common;
using Aki.Core.Patches;
using BepInEx;
-using BepInEx.Bootstrap;
-using UnityEngine;
namespace Aki.Core
{
@@ -14,7 +9,7 @@ namespace Aki.Core
class AkiCorePlugin : BaseUnityPlugin
{
// Temp static logger field, remove along with plugin whitelisting before release
- private static BepInEx.Logging.ManualLogSource _logger;
+ internal static BepInEx.Logging.ManualLogSource _logger;
public void Awake()
{
@@ -42,41 +37,5 @@ namespace Aki.Core
Logger.LogInfo("Completed: Aki.Core");
}
-
- ///
- /// See for explanation on why this is needed.
- /// Yes, I know this is jank but it's temporary and will be removed before release :)
- ///
- internal static void CheckForNonWhitelistedPlugins()
- {
- var whitelistedPlugins = new HashSet
- {
- "com.spt-aki.core",
- "com.spt-aki.custom",
- "com.spt-aki.debugging",
- "com.spt-aki.singleplayer",
- "com.bepis.bepinex.configurationmanager",
- "com.terkoiz.freecam",
- "com.sinai.unityexplorer",
- "com.cwx.debuggingtool-dxyz",
- "com.cwx.debuggingtool",
- "xyz.drakia.botdebug",
- "com.kobrakon.camunsnap",
- "RuntimeUnityEditor"
- };
-
- var disallowedPlugins = Chainloader.PluginInfos.Values.Select(pi => pi.Metadata.GUID).Except(whitelistedPlugins).ToArray();
- if (disallowedPlugins.Any())
- {
- _logger.LogError($"One or more non-whitelisted plugins were detected. Mods are not allowed in BleedingEdge builds of SPT. Illegal plugins:\n{string.Join("\n", disallowedPlugins)}");
-
- // Delay game shutdown by a little bit, since logging sometimes doesn't have enough time to write to file
- Task.Run(() =>
- {
- Task.Delay(500);
- Application.Quit(0);
- });
- }
- }
}
}
diff --git a/project/Aki.Core/Patches/PreventClientModsPatch.cs b/project/Aki.Core/Patches/PreventClientModsPatch.cs
index 60090a8..ad71dd5 100644
--- a/project/Aki.Core/Patches/PreventClientModsPatch.cs
+++ b/project/Aki.Core/Patches/PreventClientModsPatch.cs
@@ -1,5 +1,9 @@
-using System.Reflection;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
using Aki.Reflection.Patching;
+using BepInEx.Bootstrap;
using EFT;
using HarmonyLib;
@@ -18,7 +22,33 @@ namespace Aki.Core.Patches
[PatchPrefix]
private static void Prefix()
{
- AkiCorePlugin.CheckForNonWhitelistedPlugins();
+ CheckForNonWhitelistedPlugins();
+ }
+
+ private static void CheckForNonWhitelistedPlugins()
+ {
+ var whitelistedPlugins = new HashSet
+ {
+ "com.spt-aki.core",
+ "com.spt-aki.custom",
+ "com.spt-aki.debugging",
+ "com.spt-aki.singleplayer",
+ "com.bepis.bepinex.configurationmanager",
+ "com.terkoiz.freecam",
+ "com.sinai.unityexplorer",
+ "com.cwx.debuggingtool-dxyz",
+ "com.cwx.debuggingtool",
+ "xyz.drakia.botdebug",
+ "com.kobrakon.camunsnap",
+ "RuntimeUnityEditor"
+ };
+
+ var disallowedPlugins = Chainloader.PluginInfos.Values.Select(pi => pi.Metadata.GUID).Except(whitelistedPlugins).ToArray();
+ if (disallowedPlugins.Any())
+ {
+ AkiCorePlugin._logger.LogError($"One or more non-whitelisted plugins were detected. Mods are not allowed in BleedingEdge builds of SPT. Illegal plugins:\n{string.Join("\n", disallowedPlugins)}");
+ throw new Exception("Non-debug client mods have been detected. Mods are not allowed in BleedingEdge builds of SPT - please remove them before playing!");
+ }
}
}
}
\ No newline at end of file