- /// using SMLHelper.Options;
+ /// using Nautilus.Options;
/// using UnityEngine;
///
/// public class MyConfig : ConfigFile
diff --git a/SMLHelper/Json/ConfigFileAttribute.cs b/Nautilus/Json/ConfigFileAttribute.cs
similarity index 95%
rename from SMLHelper/Json/ConfigFileAttribute.cs
rename to Nautilus/Json/ConfigFileAttribute.cs
index 78e64acec..6ba611824 100644
--- a/SMLHelper/Json/ConfigFileAttribute.cs
+++ b/Nautilus/Json/ConfigFileAttribute.cs
@@ -1,6 +1,6 @@
-namespace SMLHelper.Json;
+using System;
-using System;
+namespace Nautilus.Json;
///
/// Attribute used to specify the filename and subfolder for a .
@@ -10,7 +10,7 @@
///
///
///
-/// using SMLHelper.Json;
+/// using Nautilus.Json;
///
/// [ConfigFile("options", "configs")]
/// public class Config : ConfigFile
diff --git a/SMLHelper/Json/ConfigFileEventArgs.cs b/Nautilus/Json/ConfigFileEventArgs.cs
similarity index 93%
rename from SMLHelper/Json/ConfigFileEventArgs.cs
rename to Nautilus/Json/ConfigFileEventArgs.cs
index 1ddc5b669..946e10056 100644
--- a/SMLHelper/Json/ConfigFileEventArgs.cs
+++ b/Nautilus/Json/ConfigFileEventArgs.cs
@@ -1,6 +1,6 @@
-namespace SMLHelper.Json;
+using System;
-using System;
+namespace Nautilus.Json;
///
/// Contains basic information for a event.
diff --git a/SMLHelper/Json/Converters/ColorConverter.cs b/Nautilus/Json/Converters/ColorConverter.cs
similarity index 96%
rename from SMLHelper/Json/Converters/ColorConverter.cs
rename to Nautilus/Json/Converters/ColorConverter.cs
index 4120855de..0cf2af7c8 100644
--- a/SMLHelper/Json/Converters/ColorConverter.cs
+++ b/Nautilus/Json/Converters/ColorConverter.cs
@@ -1,8 +1,8 @@
-namespace SMLHelper.Json.Converters;
-
-using System;
-using UnityEngine;
+using System;
using Newtonsoft.Json;
+using UnityEngine;
+
+namespace Nautilus.Json.Converters;
///
/// A Color json converter that simplifies the Color to only r,g,b,a serialization.
diff --git a/SMLHelper/Json/Converters/CustomEnumConverter.cs b/Nautilus/Json/Converters/CustomEnumConverter.cs
similarity index 98%
rename from SMLHelper/Json/Converters/CustomEnumConverter.cs
rename to Nautilus/Json/Converters/CustomEnumConverter.cs
index 39ebe8750..e989b2178 100644
--- a/SMLHelper/Json/Converters/CustomEnumConverter.cs
+++ b/Nautilus/Json/Converters/CustomEnumConverter.cs
@@ -1,7 +1,7 @@
using System;
using Newtonsoft.Json;
-namespace SMLHelper.Json.Converters;
+namespace Nautilus.Json.Converters;
///
/// An Enum json converter that supports custom enum conversions.
diff --git a/SMLHelper/Json/Converters/FloatConverter.cs b/Nautilus/Json/Converters/FloatConverter.cs
similarity index 98%
rename from SMLHelper/Json/Converters/FloatConverter.cs
rename to Nautilus/Json/Converters/FloatConverter.cs
index 64747ffaf..5a505696f 100644
--- a/SMLHelper/Json/Converters/FloatConverter.cs
+++ b/Nautilus/Json/Converters/FloatConverter.cs
@@ -1,9 +1,9 @@
-namespace SMLHelper.Json.Converters;
-
-using System;
+using System;
using System.Globalization;
using Newtonsoft.Json;
+namespace Nautilus.Json.Converters;
+
///
/// A for rounding floats or doubles to a given number of decimal places,
/// trimming trailing 0s.
diff --git a/SMLHelper/Json/Converters/KeyCodeConverter.cs b/Nautilus/Json/Converters/KeyCodeConverter.cs
similarity index 95%
rename from SMLHelper/Json/Converters/KeyCodeConverter.cs
rename to Nautilus/Json/Converters/KeyCodeConverter.cs
index 4b713bfac..060a6f1df 100644
--- a/SMLHelper/Json/Converters/KeyCodeConverter.cs
+++ b/Nautilus/Json/Converters/KeyCodeConverter.cs
@@ -1,9 +1,9 @@
-namespace SMLHelper.Json.Converters;
-
-using System;
-using SMLHelper.Utility;
-using UnityEngine;
+using System;
+using Nautilus.Utility;
using Newtonsoft.Json;
+using UnityEngine;
+
+namespace Nautilus.Json.Converters;
///
/// A for handling s.
diff --git a/SMLHelper/Json/Converters/QuaternionConverter.cs b/Nautilus/Json/Converters/QuaternionConverter.cs
similarity index 97%
rename from SMLHelper/Json/Converters/QuaternionConverter.cs
rename to Nautilus/Json/Converters/QuaternionConverter.cs
index e97bbbc1d..4101199b2 100644
--- a/SMLHelper/Json/Converters/QuaternionConverter.cs
+++ b/Nautilus/Json/Converters/QuaternionConverter.cs
@@ -1,8 +1,8 @@
-namespace SMLHelper.Json.Converters;
-
-using System;
-using UnityEngine;
+using System;
using Newtonsoft.Json;
+using UnityEngine;
+
+namespace Nautilus.Json.Converters;
///
/// A Quaternion json converter that simplifies the Vector3 to only x,y,z serialization.
diff --git a/SMLHelper/Json/Converters/Vector2Converter.cs b/Nautilus/Json/Converters/Vector2Converter.cs
similarity index 97%
rename from SMLHelper/Json/Converters/Vector2Converter.cs
rename to Nautilus/Json/Converters/Vector2Converter.cs
index 023eca599..fdd735a62 100644
--- a/SMLHelper/Json/Converters/Vector2Converter.cs
+++ b/Nautilus/Json/Converters/Vector2Converter.cs
@@ -1,8 +1,8 @@
-namespace SMLHelper.Json.Converters;
-
using System;
-using UnityEngine;
using Newtonsoft.Json;
+using UnityEngine;
+
+namespace Nautilus.Json.Converters;
///
/// A Vector2 json converter that simplifies the Vector2 to only x,y serialization.
diff --git a/SMLHelper/Json/Converters/Vector2IntConverter.cs b/Nautilus/Json/Converters/Vector2IntConverter.cs
similarity index 97%
rename from SMLHelper/Json/Converters/Vector2IntConverter.cs
rename to Nautilus/Json/Converters/Vector2IntConverter.cs
index b86f0e43f..89bc7f255 100644
--- a/SMLHelper/Json/Converters/Vector2IntConverter.cs
+++ b/Nautilus/Json/Converters/Vector2IntConverter.cs
@@ -1,8 +1,8 @@
-namespace SMLHelper.Json.Converters;
-
using System;
-using UnityEngine;
using Newtonsoft.Json;
+using UnityEngine;
+
+namespace Nautilus.Json.Converters;
///
/// A Vector2Int json converter that simplifies the Vector2Int to only x,y serialization.
diff --git a/SMLHelper/Json/Converters/Vector3Converter.cs b/Nautilus/Json/Converters/Vector3Converter.cs
similarity index 96%
rename from SMLHelper/Json/Converters/Vector3Converter.cs
rename to Nautilus/Json/Converters/Vector3Converter.cs
index 053132333..e8a8c5596 100644
--- a/SMLHelper/Json/Converters/Vector3Converter.cs
+++ b/Nautilus/Json/Converters/Vector3Converter.cs
@@ -1,8 +1,8 @@
-namespace SMLHelper.Json.Converters;
-
-using System;
-using UnityEngine;
+using System;
using Newtonsoft.Json;
+using UnityEngine;
+
+namespace Nautilus.Json.Converters;
///
/// A Vector3 json converter that simplifies the Vector3 to only x,y,z serialization.
diff --git a/SMLHelper/Json/Converters/Vector3IntConverter.cs b/Nautilus/Json/Converters/Vector3IntConverter.cs
similarity index 97%
rename from SMLHelper/Json/Converters/Vector3IntConverter.cs
rename to Nautilus/Json/Converters/Vector3IntConverter.cs
index 503054822..29c465d30 100644
--- a/SMLHelper/Json/Converters/Vector3IntConverter.cs
+++ b/Nautilus/Json/Converters/Vector3IntConverter.cs
@@ -1,8 +1,8 @@
-namespace SMLHelper.Json.Converters;
-
using System;
-using UnityEngine;
using Newtonsoft.Json;
+using UnityEngine;
+
+namespace Nautilus.Json.Converters;
///
/// A Vector3Int json converter that simplifies the Vector3Int to only x,y,z serialization.
diff --git a/SMLHelper/Json/Converters/Vector4Converter.cs b/Nautilus/Json/Converters/Vector4Converter.cs
similarity index 97%
rename from SMLHelper/Json/Converters/Vector4Converter.cs
rename to Nautilus/Json/Converters/Vector4Converter.cs
index 3a8e014bb..103b07815 100644
--- a/SMLHelper/Json/Converters/Vector4Converter.cs
+++ b/Nautilus/Json/Converters/Vector4Converter.cs
@@ -1,8 +1,8 @@
-namespace SMLHelper.Json.Converters;
-
using System;
-using UnityEngine;
using Newtonsoft.Json;
+using UnityEngine;
+
+namespace Nautilus.Json.Converters;
///
/// A Vector4 json converter that simplifies the Vector4 to only x,y,z,w serialization.
diff --git a/SMLHelper/Json/ExtensionMethods/JsonExtensions.cs b/Nautilus/Json/ExtensionMethods/JsonExtensions.cs
similarity index 96%
rename from SMLHelper/Json/ExtensionMethods/JsonExtensions.cs
rename to Nautilus/Json/ExtensionMethods/JsonExtensions.cs
index 701f84a92..7894d54df 100644
--- a/SMLHelper/Json/ExtensionMethods/JsonExtensions.cs
+++ b/Nautilus/Json/ExtensionMethods/JsonExtensions.cs
@@ -1,8 +1,8 @@
-namespace SMLHelper.Json.ExtensionMethods;
-
-using SMLHelper.Utility;
+using Nautilus.Utility;
using Newtonsoft.Json;
+namespace Nautilus.Json.ExtensionMethods;
+
///
/// Extension methods for parsing objects as JSON data.
///
diff --git a/SMLHelper/Json/Interfaces/IJsonFile.cs b/Nautilus/Json/Interfaces/IJsonFile.cs
similarity index 97%
rename from SMLHelper/Json/Interfaces/IJsonFile.cs
rename to Nautilus/Json/Interfaces/IJsonFile.cs
index 5e4bd6d8a..7e7544717 100644
--- a/SMLHelper/Json/Interfaces/IJsonFile.cs
+++ b/Nautilus/Json/Interfaces/IJsonFile.cs
@@ -1,6 +1,6 @@
-namespace SMLHelper.Json.Interfaces;
+using Newtonsoft.Json;
-using Newtonsoft.Json;
+namespace Nautilus.Json.Interfaces;
///
/// A simple interface for a JSON file framework.
diff --git a/SMLHelper/Json/JsonFile.cs b/Nautilus/Json/JsonFile.cs
similarity index 97%
rename from SMLHelper/Json/JsonFile.cs
rename to Nautilus/Json/JsonFile.cs
index ced214cd2..87b93c75d 100644
--- a/SMLHelper/Json/JsonFile.cs
+++ b/Nautilus/Json/JsonFile.cs
@@ -1,12 +1,12 @@
-namespace SMLHelper.Json;
-
-using System;
+using System;
using System.Linq;
+using Nautilus.Json.Converters;
+using Nautilus.Json.ExtensionMethods;
+using Nautilus.Json.Interfaces;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
-using SMLHelper.Json.Converters;
-using SMLHelper.Json.ExtensionMethods;
-using SMLHelper.Json.Interfaces;
+
+namespace Nautilus.Json;
///
/// A simple abstract implementation of .
diff --git a/SMLHelper/Json/JsonFileEventArgs.cs b/Nautilus/Json/JsonFileEventArgs.cs
similarity index 93%
rename from SMLHelper/Json/JsonFileEventArgs.cs
rename to Nautilus/Json/JsonFileEventArgs.cs
index aae0761f7..103fe5953 100644
--- a/SMLHelper/Json/JsonFileEventArgs.cs
+++ b/Nautilus/Json/JsonFileEventArgs.cs
@@ -1,6 +1,6 @@
-namespace SMLHelper.Json;
+using System;
-using System;
+namespace Nautilus.Json;
///
/// Contains basic information for a event.
diff --git a/SMLHelper/Json/SaveDataCache.cs b/Nautilus/Json/SaveDataCache.cs
similarity index 97%
rename from SMLHelper/Json/SaveDataCache.cs
rename to Nautilus/Json/SaveDataCache.cs
index ffd093cf4..78dd44512 100644
--- a/SMLHelper/Json/SaveDataCache.cs
+++ b/Nautilus/Json/SaveDataCache.cs
@@ -1,12 +1,12 @@
-namespace SMLHelper.Json;
-
-using Attributes;
-using Interfaces;
-using System;
+using System;
using System.IO;
using System.Reflection;
+using Nautilus.Json.Attributes;
+using Nautilus.Json.Interfaces;
+using Nautilus.Utility;
using Newtonsoft.Json;
-using SMLHelper.Utility;
+
+namespace Nautilus.Json;
///
/// An abstract implementation of intended for use with caching per-save data.
diff --git a/SMLHelper/MonoBehaviours/EntitySpawner.cs b/Nautilus/MonoBehaviours/EntitySpawner.cs
similarity index 91%
rename from SMLHelper/MonoBehaviours/EntitySpawner.cs
rename to Nautilus/MonoBehaviours/EntitySpawner.cs
index 75afabd18..c94bb24ab 100644
--- a/SMLHelper/MonoBehaviours/EntitySpawner.cs
+++ b/Nautilus/MonoBehaviours/EntitySpawner.cs
@@ -1,12 +1,11 @@
-namespace SMLHelper.MonoBehaviours;
-
-using SMLHelper.Utility;
using System.Collections;
-using SMLHelper.Handlers;
-using SMLHelper.Patchers;
+using Nautilus.Handlers;
+using Nautilus.Patchers;
+using Nautilus.Utility;
using UnityEngine;
using UWE;
+namespace Nautilus.MonoBehaviours;
internal class EntitySpawner : MonoBehaviour
{
@@ -37,7 +36,7 @@ IEnumerator SpawnAsync()
}
- GameObject obj = Utils.InstantiateDeactivated(prefab, spawnInfo.SpawnPosition, spawnInfo.Rotation);
+ GameObject obj = UWE.Utils.InstantiateDeactivated(prefab, spawnInfo.SpawnPosition, spawnInfo.Rotation);
LargeWorldEntity lwe = obj.GetComponent();
diff --git a/SMLHelper/SMLHelper.csproj b/Nautilus/Nautilus.csproj
similarity index 58%
rename from SMLHelper/SMLHelper.csproj
rename to Nautilus/Nautilus.csproj
index 095ec2ffd..4b7ef8afa 100644
--- a/SMLHelper/SMLHelper.csproj
+++ b/Nautilus/Nautilus.csproj
@@ -4,37 +4,27 @@
net472
false
false
- SMLHelper
- SMLHelper
- com.snmodding.smlhelper
+ Nautilus
+ Nautilus
+ com.snmodding.nautilus
11
true
true
- SN.STABLE;BZ.STABLE;SN.EXP;BZ.EXP
+ SN.STABLE;BZ.STABLE
AnyCPU
- Copyright @ 2019
- A library that helps making mods for Subnautica easier.
+ Copyright @ 2023
+ Core library for modding Subnautica.
bin\SN.STABLE\
SUBNAUTICA;SUBNAUTICA_STABLE
- bin\SN.STABLE\SMLHelper.xml
-
-
- bin\SN.EXP\
- SUBNAUTICA;SUBNAUTICA_EXP
- bin\SN.EXP\SMLHelper.xml
+ bin\SN.STABLE\Nautilus.xml
bin\BZ.STABLE\
BELOWZERO;BELOWZERO_STABLE
- bin\BZ.STABLE\SMLHelper.xml
-
-
- bin\BZ.EXP\
- BELOWZERO;BELOWZERO_EXP
- bin\BZ.EXP\SMLHelper.xml
+ bin\BZ.STABLE\Nautilus.xml
@@ -46,7 +36,7 @@
-
+
diff --git a/SMLHelper/Options/Attributes/ButtonAttribute.cs b/Nautilus/Options/Attributes/ButtonAttribute.cs
similarity index 90%
rename from SMLHelper/Options/Attributes/ButtonAttribute.cs
rename to Nautilus/Options/Attributes/ButtonAttribute.cs
index b3228bfe7..f3101f01e 100644
--- a/SMLHelper/Options/Attributes/ButtonAttribute.cs
+++ b/Nautilus/Options/Attributes/ButtonAttribute.cs
@@ -1,8 +1,8 @@
-namespace SMLHelper.Options.Attributes;
+using System;
+using Nautilus.Json;
+using Nautilus.Utility;
-using Json;
-using System;
-using SMLHelper.Utility;
+namespace Nautilus.Options.Attributes;
///
/// Attribute used to signify the decorated method should be represented in the mod's options menu
@@ -11,8 +11,8 @@
///
///
///
-/// using SMLHelper.Json;
-/// using SMLHelper.Options;
+/// using Nautilus.Json;
+/// using Nautilus.Options;
/// using QModManager.Utility;
///
/// [Menu("My Options Menu")]
diff --git a/SMLHelper/Options/Attributes/ChoiceAttribute.cs b/Nautilus/Options/Attributes/ChoiceAttribute.cs
similarity index 95%
rename from SMLHelper/Options/Attributes/ChoiceAttribute.cs
rename to Nautilus/Options/Attributes/ChoiceAttribute.cs
index 239239eb8..7625127dc 100644
--- a/SMLHelper/Options/Attributes/ChoiceAttribute.cs
+++ b/Nautilus/Options/Attributes/ChoiceAttribute.cs
@@ -1,7 +1,7 @@
-namespace SMLHelper.Options.Attributes;
+using System;
+using Nautilus.Json;
-using Json;
-using System;
+namespace Nautilus.Options.Attributes;
///
/// Attribute used to signify the decorated member should be represented in the mod's options menu as a
@@ -13,8 +13,8 @@
///
///
///
-/// using SMLHelper.Json;
-/// using SMLHelper.Options;
+/// using Nautilus.Json;
+/// using Nautilus.Options;
///
/// public enum CustomChoice { One, Two, Three }
///
diff --git a/SMLHelper/Options/Attributes/ColorAttribute.cs b/Nautilus/Options/Attributes/ColorAttribute.cs
similarity index 90%
rename from SMLHelper/Options/Attributes/ColorAttribute.cs
rename to Nautilus/Options/Attributes/ColorAttribute.cs
index 19c9084eb..86fe3dccc 100644
--- a/SMLHelper/Options/Attributes/ColorAttribute.cs
+++ b/Nautilus/Options/Attributes/ColorAttribute.cs
@@ -1,7 +1,7 @@
-namespace SMLHelper.Options.Attributes;
+using System;
+using Nautilus.Json;
-using Json;
-using System;
+namespace Nautilus.Options.Attributes;
///
/// Attribute used to signify the decorated should be represented in the mod's
@@ -9,8 +9,8 @@
///
///
///
-/// using SMLHelper.Json;
-/// using SMLHelper.Options;
+/// using Nautilus.Json;
+/// using Nautilus.Options;
///
/// [Menu("My Options Menu")]
/// public class Config : ConfigFile
diff --git a/SMLHelper/Options/Attributes/ConfigFileMetadata.cs b/Nautilus/Options/Attributes/ConfigFileMetadata.cs
similarity index 99%
rename from SMLHelper/Options/Attributes/ConfigFileMetadata.cs
rename to Nautilus/Options/Attributes/ConfigFileMetadata.cs
index 0026d941e..f78fdb336 100644
--- a/SMLHelper/Options/Attributes/ConfigFileMetadata.cs
+++ b/Nautilus/Options/Attributes/ConfigFileMetadata.cs
@@ -1,17 +1,16 @@
-namespace SMLHelper.Options.Attributes;
-
-using SMLHelper.Utility;
-using SMLHelper.Json;
-using System;
+using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
-using UnityEngine;
-
+using Nautilus.Json;
+using Nautilus.Utility;
using Newtonsoft.Json;
using TMPro;
+using UnityEngine;
+
+namespace Nautilus.Options.Attributes;
internal class ConfigFileMetadata where T : ConfigFile, new()
{
diff --git a/SMLHelper/Options/Attributes/IgnoreMemberAttribute.cs b/Nautilus/Options/Attributes/IgnoreMemberAttribute.cs
similarity index 90%
rename from SMLHelper/Options/Attributes/IgnoreMemberAttribute.cs
rename to Nautilus/Options/Attributes/IgnoreMemberAttribute.cs
index bab298ebf..115b9c204 100644
--- a/SMLHelper/Options/Attributes/IgnoreMemberAttribute.cs
+++ b/Nautilus/Options/Attributes/IgnoreMemberAttribute.cs
@@ -1,7 +1,7 @@
-namespace SMLHelper.Options.Attributes;
+using System;
+using Nautilus.Json;
-using Json;
-using System;
+namespace Nautilus.Options.Attributes;
///
/// Attribute used to signify the given property, field or method should be ignored when generating your mod options menu.
@@ -12,8 +12,8 @@
///
///
///
-/// using SMLHelper.Json;
-/// using SMLHelper.Options;
+/// using Nautilus.Json;
+/// using Nautilus.Options;
///
/// [Menu("My Options Menu")]
/// public class Config : ConfigFile
diff --git a/SMLHelper/Options/Attributes/KeybindAttribute.cs b/Nautilus/Options/Attributes/KeybindAttribute.cs
similarity index 90%
rename from SMLHelper/Options/Attributes/KeybindAttribute.cs
rename to Nautilus/Options/Attributes/KeybindAttribute.cs
index 3e9c6bbd0..f3328adca 100644
--- a/SMLHelper/Options/Attributes/KeybindAttribute.cs
+++ b/Nautilus/Options/Attributes/KeybindAttribute.cs
@@ -1,17 +1,17 @@
-namespace SMLHelper.Options.Attributes;
-
-using Json;
-using System;
+using System;
+using Nautilus.Json;
using UnityEngine;
+namespace Nautilus.Options.Attributes;
+
///
/// Attribute used to signify the decorated should be represented in the mod's
/// option menu as a .
///
///
///
-/// using SMLHelper.Json;
-/// using SMLHelper.Options;
+/// using Nautilus.Json;
+/// using Nautilus.Options;
/// using UnityEngine;
///
/// [Menu("My Options Menu")]
diff --git a/SMLHelper/Options/Attributes/MemberInfoMetadata.cs b/Nautilus/Options/Attributes/MemberInfoMetadata.cs
similarity index 97%
rename from SMLHelper/Options/Attributes/MemberInfoMetadata.cs
rename to Nautilus/Options/Attributes/MemberInfoMetadata.cs
index ece9b0b79..58d12bade 100644
--- a/SMLHelper/Options/Attributes/MemberInfoMetadata.cs
+++ b/Nautilus/Options/Attributes/MemberInfoMetadata.cs
@@ -1,11 +1,11 @@
-namespace SMLHelper.Options.Attributes;
-
-using HarmonyLib;
-using Json;
-using SMLHelper.Utility;
-using System;
+using System;
using System.Linq;
using System.Reflection;
+using HarmonyLib;
+using Nautilus.Json;
+using Nautilus.Utility;
+
+namespace Nautilus.Options.Attributes;
internal enum MemberType { Unknown, Field, Property, Method };
diff --git a/SMLHelper/Options/Attributes/MenuAttribute.cs b/Nautilus/Options/Attributes/MenuAttribute.cs
similarity index 95%
rename from SMLHelper/Options/Attributes/MenuAttribute.cs
rename to Nautilus/Options/Attributes/MenuAttribute.cs
index 8d16150eb..57cb3cd70 100644
--- a/SMLHelper/Options/Attributes/MenuAttribute.cs
+++ b/Nautilus/Options/Attributes/MenuAttribute.cs
@@ -1,8 +1,8 @@
-namespace SMLHelper.Options.Attributes;
+using System;
+using Nautilus.Json;
+using Nautilus.Utility;
-using Json;
-using System;
-using SMLHelper.Utility;
+namespace Nautilus.Options.Attributes;
///
/// Attribute used to signify a menu should be automatically generated from a
@@ -11,12 +11,12 @@
///
///
///
-/// using SMLHelper.Json;
-/// using SMLHelper.Options;
+/// using Nautilus.Json;
+/// using Nautilus.Options;
/// using QModManager.Utility;
/// using UnityEngine;
///
-/// [Menu("SMLHelper Example Mod")]
+/// [Menu("Nautilus Example Mod")]
/// public class Config : ConfigFile
/// {
/// [Choice("My index-based choice", "Choice 1", "Choice 2", "Choice 3", Tooltip = "A simple tooltip")]
@@ -126,7 +126,7 @@ public enum LoadEvents : byte
///
None = 0,
///
- /// Load when the menu is registered to SMLHelper via .
+ /// Load when the menu is registered to Nautilus via .
///
///
/// In normal usage, this option is equivalent to loading when the game is launched.
diff --git a/SMLHelper/Options/Attributes/ModOptionAttribute.cs b/Nautilus/Options/Attributes/ModOptionAttribute.cs
similarity index 96%
rename from SMLHelper/Options/Attributes/ModOptionAttribute.cs
rename to Nautilus/Options/Attributes/ModOptionAttribute.cs
index 4ed888dbf..aa80d02e7 100644
--- a/SMLHelper/Options/Attributes/ModOptionAttribute.cs
+++ b/Nautilus/Options/Attributes/ModOptionAttribute.cs
@@ -1,8 +1,8 @@
-namespace SMLHelper.Options.Attributes;
+using System;
+using Nautilus.Handlers;
+using Nautilus.Json;
-using Handlers;
-using Json;
-using System;
+namespace Nautilus.Options.Attributes;
///
/// Abstract base attribute used to signify the decorated public member should generate a
diff --git a/SMLHelper/Options/Attributes/ModOptionAttributeMetadata.cs b/Nautilus/Options/Attributes/ModOptionAttributeMetadata.cs
similarity index 76%
rename from SMLHelper/Options/Attributes/ModOptionAttributeMetadata.cs
rename to Nautilus/Options/Attributes/ModOptionAttributeMetadata.cs
index 08a6e3b45..b39aa7d8d 100644
--- a/SMLHelper/Options/Attributes/ModOptionAttributeMetadata.cs
+++ b/Nautilus/Options/Attributes/ModOptionAttributeMetadata.cs
@@ -1,7 +1,7 @@
-namespace SMLHelper.Options.Attributes;
+using System.Collections.Generic;
+using Nautilus.Json;
-using Json;
-using System.Collections.Generic;
+namespace Nautilus.Options.Attributes;
internal class ModOptionAttributeMetadata where T : ConfigFile, new()
{
diff --git a/SMLHelper/Options/Attributes/ModOptionEventAttribute.cs b/Nautilus/Options/Attributes/ModOptionEventAttribute.cs
similarity index 94%
rename from SMLHelper/Options/Attributes/ModOptionEventAttribute.cs
rename to Nautilus/Options/Attributes/ModOptionEventAttribute.cs
index 763f99892..623b7d2c5 100644
--- a/SMLHelper/Options/Attributes/ModOptionEventAttribute.cs
+++ b/Nautilus/Options/Attributes/ModOptionEventAttribute.cs
@@ -1,6 +1,6 @@
-namespace SMLHelper.Options.Attributes;
+using System;
-using System;
+namespace Nautilus.Options.Attributes;
///
/// Abstract base attribute used to signify a method to call whenever the derivative event is invoked for the decorated member.
diff --git a/SMLHelper/Options/Attributes/OnChangeAttribute.cs b/Nautilus/Options/Attributes/OnChangeAttribute.cs
similarity index 95%
rename from SMLHelper/Options/Attributes/OnChangeAttribute.cs
rename to Nautilus/Options/Attributes/OnChangeAttribute.cs
index 45b91d0b8..6561412f5 100644
--- a/SMLHelper/Options/Attributes/OnChangeAttribute.cs
+++ b/Nautilus/Options/Attributes/OnChangeAttribute.cs
@@ -1,8 +1,8 @@
-namespace SMLHelper.Options.Attributes;
+using System;
+using Nautilus.Json;
+using Nautilus.Utility;
-using Json;
-using SMLHelper.Utility;
-using System;
+namespace Nautilus.Options.Attributes;
///
/// Attribute used to signify a method to call whenever the decorated member's value changes.
@@ -25,12 +25,12 @@
///
///
///
-/// using SMLHelper.Json;
-/// using SMLHelper.Options;
+/// using Nautilus.Json;
+/// using Nautilus.Options;
/// using QModManager.Utility;
/// using UnityEngine;
///
-/// [Menu("SMLHelper Example Mod")]
+/// [Menu("Nautilus Example Mod")]
/// public class Config : ConfigFile
/// {
/// [Toggle("My checkbox"), OnChange(nameof(MyCheckboxToggleEvent)), OnChange(nameof(MyGenericValueChangedEvent))]
diff --git a/SMLHelper/Options/Attributes/OnGameObjectCreatedAttribute.cs b/Nautilus/Options/Attributes/OnGameObjectCreatedAttribute.cs
similarity index 92%
rename from SMLHelper/Options/Attributes/OnGameObjectCreatedAttribute.cs
rename to Nautilus/Options/Attributes/OnGameObjectCreatedAttribute.cs
index ca8f24fdd..e0bfd7b74 100644
--- a/SMLHelper/Options/Attributes/OnGameObjectCreatedAttribute.cs
+++ b/Nautilus/Options/Attributes/OnGameObjectCreatedAttribute.cs
@@ -1,7 +1,7 @@
-namespace SMLHelper.Options.Attributes;
+using System;
+using Nautilus.Utility;
-using System;
-using SMLHelper.Utility;
+namespace Nautilus.Options.Attributes;
///
/// Attribute used to signify a method to call whenever the for the
@@ -19,12 +19,12 @@
///
///
///
-/// using SMLHelper.Json;
-/// using SMLHelper.Options;
+/// using Nautilus.Json;
+/// using Nautilus.Options;
/// using QModManager.Utility;
/// using UnityEngine;
///
-/// [Menu("SMLHelper Example Mod")]
+/// [Menu("Nautilus Example Mod")]
/// public class Config : ConfigFile
/// {
/// [Toggle("My checkbox"), OnGameObjectCreated(nameof(MyGameObjectCreatedEvent))]
diff --git a/SMLHelper/Options/Attributes/OptionsMenuBuilder.cs b/Nautilus/Options/Attributes/OptionsMenuBuilder.cs
similarity index 99%
rename from SMLHelper/Options/Attributes/OptionsMenuBuilder.cs
rename to Nautilus/Options/Attributes/OptionsMenuBuilder.cs
index 13c570074..836d9064b 100644
--- a/SMLHelper/Options/Attributes/OptionsMenuBuilder.cs
+++ b/Nautilus/Options/Attributes/OptionsMenuBuilder.cs
@@ -1,13 +1,12 @@
-namespace SMLHelper.Options.Attributes;
-
-using SMLHelper.Utility;
-using SMLHelper.Json;
-using System;
+using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
+using Nautilus.Json;
+using Nautilus.Utility;
using UnityEngine;
+namespace Nautilus.Options.Attributes;
///
/// An internal derivative of for use in auto-generating a menu based on attributes
diff --git a/SMLHelper/Options/Attributes/SliderAttribute.cs b/Nautilus/Options/Attributes/SliderAttribute.cs
similarity index 95%
rename from SMLHelper/Options/Attributes/SliderAttribute.cs
rename to Nautilus/Options/Attributes/SliderAttribute.cs
index 98337de15..92a63727a 100644
--- a/SMLHelper/Options/Attributes/SliderAttribute.cs
+++ b/Nautilus/Options/Attributes/SliderAttribute.cs
@@ -1,7 +1,7 @@
-namespace SMLHelper.Options.Attributes;
+using System;
+using Nautilus.Json;
-using Json;
-using System;
+namespace Nautilus.Options.Attributes;
///
/// Attribute used to signify the specified , or should be represented
@@ -9,8 +9,8 @@
///
///
///
-/// using SMLHelper.Json;
-/// using SMLHelper.Options;
+/// using Nautilus.Json;
+/// using Nautilus.Options;
///
/// [Menu("My Options Menu")]
/// public class Config : ConfigFile
diff --git a/SMLHelper/Options/Attributes/ToggleAttribute.cs b/Nautilus/Options/Attributes/ToggleAttribute.cs
similarity index 89%
rename from SMLHelper/Options/Attributes/ToggleAttribute.cs
rename to Nautilus/Options/Attributes/ToggleAttribute.cs
index 8f295374e..97d57f20b 100644
--- a/SMLHelper/Options/Attributes/ToggleAttribute.cs
+++ b/Nautilus/Options/Attributes/ToggleAttribute.cs
@@ -1,7 +1,7 @@
-namespace SMLHelper.Options.Attributes;
+using System;
+using Nautilus.Json;
-using Json;
-using System;
+namespace Nautilus.Options.Attributes;
///
/// Attribute used to signify the decorated should be represented in the mod's
@@ -9,8 +9,8 @@
///
///
///
-/// using SMLHelper.Json;
-/// using SMLHelper.Options;
+/// using Nautilus.Json;
+/// using Nautilus.Options;
///
/// [Menu("My Options Menu")]
/// public class Config : ConfigFile
diff --git a/SMLHelper/Options/ConfigEntryExtensions.cs b/Nautilus/Options/ConfigEntryExtensions.cs
similarity index 99%
rename from SMLHelper/Options/ConfigEntryExtensions.cs
rename to Nautilus/Options/ConfigEntryExtensions.cs
index 65b5f94e2..666858f0e 100644
--- a/SMLHelper/Options/ConfigEntryExtensions.cs
+++ b/Nautilus/Options/ConfigEntryExtensions.cs
@@ -1,11 +1,11 @@
-namespace SMLHelper.Options;
-
-using System;
+using System;
using System.Collections.Generic;
using System.Linq;
using BepInEx.Configuration;
using UnityEngine;
+namespace Nautilus.Options;
+
///
///
///
diff --git a/SMLHelper/Options/ModButtonOption.cs b/Nautilus/Options/ModButtonOption.cs
similarity index 97%
rename from SMLHelper/Options/ModButtonOption.cs
rename to Nautilus/Options/ModButtonOption.cs
index 4b073b2cd..b54a38cfc 100644
--- a/SMLHelper/Options/ModButtonOption.cs
+++ b/Nautilus/Options/ModButtonOption.cs
@@ -1,12 +1,11 @@
-namespace SMLHelper.Options;
-
-using System;
+using System;
using System.Collections.Generic;
using System.Linq;
-using System.Reflection;
using UnityEngine.Events;
using UnityEngine.UI;
+namespace Nautilus.Options;
+
///
/// Contains all the information about a button click event.
///
diff --git a/SMLHelper/Options/ModChoiceOption.cs b/Nautilus/Options/ModChoiceOption.cs
similarity index 96%
rename from SMLHelper/Options/ModChoiceOption.cs
rename to Nautilus/Options/ModChoiceOption.cs
index e5d970c30..9a9c179bb 100644
--- a/SMLHelper/Options/ModChoiceOption.cs
+++ b/Nautilus/Options/ModChoiceOption.cs
@@ -1,12 +1,11 @@
-namespace SMLHelper.Options;
-
-using System;
+using System;
using System.Collections;
using System.Collections.Generic;
-using SMLHelper.Options.Utility;
+using Nautilus.Options.Utility;
using UnityEngine;
using UnityEngine.Events;
-using static SMLHelper.Options.OptionItem;
+
+namespace Nautilus.Options;
///
/// Contains all the information about a choice changed event.
@@ -132,7 +131,7 @@ public static ModChoiceOption Create(string id, string label, T[] options, T
///
public override Type AdjusterComponent => typeof(ChoiceOptionAdjust);
}
-internal class ChoiceOptionAdjust: ModOptionAdjust
+internal class ChoiceOptionAdjust: OptionItem.ModOptionAdjust
{
private const float spacing = 10f;
diff --git a/SMLHelper/Options/ModColorOption.cs b/Nautilus/Options/ModColorOption.cs
similarity index 99%
rename from SMLHelper/Options/ModColorOption.cs
rename to Nautilus/Options/ModColorOption.cs
index c55f71d6f..dda6a58a5 100644
--- a/SMLHelper/Options/ModColorOption.cs
+++ b/Nautilus/Options/ModColorOption.cs
@@ -2,7 +2,7 @@
using UnityEngine;
using UnityEngine.Events;
-namespace SMLHelper.Options;
+namespace Nautilus.Options;
///
/// Contains all the information about a color changed event.
diff --git a/SMLHelper/Options/ModKeybindOption.cs b/Nautilus/Options/ModKeybindOption.cs
similarity index 98%
rename from SMLHelper/Options/ModKeybindOption.cs
rename to Nautilus/Options/ModKeybindOption.cs
index 42ad8da64..03624d5ce 100644
--- a/SMLHelper/Options/ModKeybindOption.cs
+++ b/Nautilus/Options/ModKeybindOption.cs
@@ -1,11 +1,10 @@
-namespace SMLHelper.Options;
-
-using System;
+using System;
using System.Collections;
-using SMLHelper.Utility;
-using UnityEngine;
-using UnityEngine.Events;
+using Nautilus.Utility;
using TMPro;
+using UnityEngine;
+
+namespace Nautilus.Options;
///
/// Contains all the information about a keybind changed event.
diff --git a/SMLHelper/Options/ModOptionTooltip.cs b/Nautilus/Options/ModOptionTooltip.cs
similarity index 79%
rename from SMLHelper/Options/ModOptionTooltip.cs
rename to Nautilus/Options/ModOptionTooltip.cs
index d8d2d3033..8cc4443dd 100644
--- a/SMLHelper/Options/ModOptionTooltip.cs
+++ b/Nautilus/Options/ModOptionTooltip.cs
@@ -1,9 +1,8 @@
-namespace SMLHelper.Options;
-
-using System.Collections.Generic;
-using UnityEngine;
+using UnityEngine;
using UnityEngine.UI;
+namespace Nautilus.Options;
+
internal class ModOptionTooltip : MonoBehaviour, ITooltip
{
public string Tooltip;
diff --git a/SMLHelper/Options/ModOptions.cs b/Nautilus/Options/ModOptions.cs
similarity index 99%
rename from SMLHelper/Options/ModOptions.cs
rename to Nautilus/Options/ModOptions.cs
index d7916aae0..6d12fa73b 100644
--- a/SMLHelper/Options/ModOptions.cs
+++ b/Nautilus/Options/ModOptions.cs
@@ -1,12 +1,12 @@
-namespace SMLHelper.Options;
-
-using System;
+using System;
using System.Collections.Generic;
-using UnityEngine;
-using UnityEngine.UI;
-using SMLHelper.Utility;
using System.Linq;
using BepInEx.Logging;
+using Nautilus.Utility;
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace Nautilus.Options;
///
/// Abstract class that provides the framework for your mod's in-game configuration options.
diff --git a/SMLHelper/Options/ModSliderOption.cs b/Nautilus/Options/ModSliderOption.cs
similarity index 99%
rename from SMLHelper/Options/ModSliderOption.cs
rename to Nautilus/Options/ModSliderOption.cs
index 93e45cc1f..0a977a120 100644
--- a/SMLHelper/Options/ModSliderOption.cs
+++ b/Nautilus/Options/ModSliderOption.cs
@@ -1,14 +1,14 @@
-namespace SMLHelper.Options;
-
-using System;
-using System.Reflection;
+using System;
using System.Collections;
+using System.Reflection;
+using BepInEx.Logging;
+using Nautilus.Utility;
+using TMPro;
using UnityEngine;
-using UnityEngine.UI;
using UnityEngine.Events;
-using TMPro;
-using SMLHelper.Utility;
-using BepInEx.Logging;
+using UnityEngine.UI;
+
+namespace Nautilus.Options;
///
/// Contains all the information about a slider changed event.
diff --git a/SMLHelper/Options/ModToggleOption.cs b/Nautilus/Options/ModToggleOption.cs
similarity index 98%
rename from SMLHelper/Options/ModToggleOption.cs
rename to Nautilus/Options/ModToggleOption.cs
index e5e051759..d59b9f298 100644
--- a/SMLHelper/Options/ModToggleOption.cs
+++ b/Nautilus/Options/ModToggleOption.cs
@@ -1,10 +1,10 @@
-namespace SMLHelper.Options;
-
-using System;
+using System;
using System.Collections;
using UnityEngine;
using UnityEngine.Events;
+namespace Nautilus.Options;
+
///
/// Contains all the information about a toggle changed event.
///
diff --git a/SMLHelper/Options/OptionEventArgs.cs b/Nautilus/Options/OptionEventArgs.cs
similarity index 96%
rename from SMLHelper/Options/OptionEventArgs.cs
rename to Nautilus/Options/OptionEventArgs.cs
index 07cfc6d20..b6a7a801f 100644
--- a/SMLHelper/Options/OptionEventArgs.cs
+++ b/Nautilus/Options/OptionEventArgs.cs
@@ -1,6 +1,6 @@
-namespace SMLHelper.Options;
+using System;
-using System;
+namespace Nautilus.Options;
///
/// Interface for event arguments for a .
diff --git a/SMLHelper/Options/Utility/Validator.cs b/Nautilus/Options/Utility/Validator.cs
similarity index 95%
rename from SMLHelper/Options/Utility/Validator.cs
rename to Nautilus/Options/Utility/Validator.cs
index 2f6c728ef..0b9aa8c9c 100644
--- a/SMLHelper/Options/Utility/Validator.cs
+++ b/Nautilus/Options/Utility/Validator.cs
@@ -1,8 +1,7 @@
-namespace SMLHelper.Options.Utility;
+using BepInEx.Logging;
+using Nautilus.Utility;
-using System.Text.RegularExpressions;
-using BepInEx.Logging;
-using SMLHelper.Utility;
+namespace Nautilus.Options.Utility;
internal static class Validator
{
diff --git a/SMLHelper/Patchers/ConsoleCommandsPatcher.cs b/Nautilus/Patchers/ConsoleCommandsPatcher.cs
similarity index 99%
rename from SMLHelper/Patchers/ConsoleCommandsPatcher.cs
rename to Nautilus/Patchers/ConsoleCommandsPatcher.cs
index f1d06eab1..d96c84971 100644
--- a/SMLHelper/Patchers/ConsoleCommandsPatcher.cs
+++ b/Nautilus/Patchers/ConsoleCommandsPatcher.cs
@@ -1,16 +1,15 @@
-namespace SMLHelper.Patchers;
-
-using Commands;
-using System;
+using System;
using System.Collections.Generic;
-using HarmonyLib;
-using System.Reflection;
using System.Linq;
+using System.Reflection;
using System.Text.RegularExpressions;
+using BepInEx.Logging;
+using HarmonyLib;
+using Nautilus.Commands;
+using Nautilus.Utility;
using UnityEngine;
-using SMLHelper.Utility;
-using BepInEx.Logging;
+namespace Nautilus.Patchers;
internal static class ConsoleCommandsPatcher
{
diff --git a/SMLHelper/Patchers/CraftDataPatcher.cs b/Nautilus/Patchers/CraftDataPatcher.cs
similarity index 97%
rename from SMLHelper/Patchers/CraftDataPatcher.cs
rename to Nautilus/Patchers/CraftDataPatcher.cs
index 8105a1572..7905786f5 100644
--- a/SMLHelper/Patchers/CraftDataPatcher.cs
+++ b/Nautilus/Patchers/CraftDataPatcher.cs
@@ -1,15 +1,12 @@
-using SMLHelper.Handlers;
-
-namespace SMLHelper.Patchers;
-
-using System;
+using System;
using System.Collections.Generic;
-using Assets;
using BepInEx.Logging;
using HarmonyLib;
-using Utility;
+using Nautilus.Handlers;
+using Nautilus.Utility;
using UnityEngine;
-using System.Linq;
+
+namespace Nautilus.Patchers;
internal partial class CraftDataPatcher
{
diff --git a/SMLHelper/Patchers/CraftDataPatcher_BelowZero.cs b/Nautilus/Patchers/CraftDataPatcher_BelowZero.cs
similarity index 83%
rename from SMLHelper/Patchers/CraftDataPatcher_BelowZero.cs
rename to Nautilus/Patchers/CraftDataPatcher_BelowZero.cs
index 59c57aa93..31d3b18bb 100644
--- a/SMLHelper/Patchers/CraftDataPatcher_BelowZero.cs
+++ b/Nautilus/Patchers/CraftDataPatcher_BelowZero.cs
@@ -1,12 +1,12 @@
#if BELOWZERO
-namespace SMLHelper.Patchers
+namespace Nautilus.Patchers
{
using System;
using System.Collections.Generic;
using System.Text;
using BepInEx.Logging;
using HarmonyLib;
- using SMLHelper.Utility;
+ using Nautilus.Utility;
internal partial class CraftDataPatcher
{
@@ -23,10 +23,10 @@ private static void PatchForBelowZero(Harmony harmony)
private static void CheckPatchRequired(TechType techType)
{
- if (CustomRecipeData.TryGetValue(techType, out JsonValue smlTechData))
+ if (CustomRecipeData.TryGetValue(techType, out JsonValue customTechData))
{
if (!TechData.entries.TryGetValue(techType, out JsonValue techData) ||
- smlTechData != techData)
+ customTechData != techData)
{
AddCustomTechDataToOriginalDictionary();
}
@@ -37,24 +37,24 @@ private static void AddCustomTechDataToOriginalDictionary()
{
List added = new();
List updated = new();
- foreach (KeyValuePair customTechData in CustomRecipeData)
+ foreach (KeyValuePair customRecipe in CustomRecipeData)
{
- JsonValue smlTechData = customTechData.Value;
- TechType techType = customTechData.Key;
+ JsonValue jsonValue = customRecipe.Value;
+ TechType techType = customRecipe.Key;
if (TechData.entries.TryGetValue(techType, out JsonValue techData))
{
- if (techData != smlTechData)
+ if (techData != jsonValue)
{
updated.Add(techType);
- foreach (int key in smlTechData.Keys)
+ foreach (int key in jsonValue.Keys)
{
- techData[key] = smlTechData[key];
+ techData[key] = jsonValue[key];
}
}
}
else
{
- TechData.entries.Add(techType, smlTechData);
+ TechData.entries.Add(techType, jsonValue);
added.Add(techType);
}
}
diff --git a/SMLHelper/Patchers/CraftDataPatcher_Subnautica.cs b/Nautilus/Patchers/CraftDataPatcher_Subnautica.cs
similarity index 78%
rename from SMLHelper/Patchers/CraftDataPatcher_Subnautica.cs
rename to Nautilus/Patchers/CraftDataPatcher_Subnautica.cs
index 47aa65988..5cf601427 100644
--- a/SMLHelper/Patchers/CraftDataPatcher_Subnautica.cs
+++ b/Nautilus/Patchers/CraftDataPatcher_Subnautica.cs
@@ -1,12 +1,11 @@
-#if SUBNAUTICA
-namespace SMLHelper.Patchers
-{
- using HarmonyLib;
- using SMLHelper.Utility;
- using SMLHelper;
- using System.Collections.Generic;
- using BepInEx.Logging;
+using System.Collections.Generic;
+using BepInEx.Logging;
+using HarmonyLib;
+using Nautilus.Utility;
+#if SUBNAUTICA
+namespace Nautilus.Patchers
+{
internal partial class CraftDataPatcher
{
internal static IDictionary CustomRecipeData = new SelfCheckingDictionary("CustomRecipeData", AsStringFunction);
@@ -110,18 +109,18 @@ private static void GetAllItemActionsPostfix(InventoryItem item, ref ItemAction
__result |= ItemAction.Use;
}
- private static void DictionaryPrefix(TechType techType, IDictionary smlCollection, IDictionary craftDataCollection)
+ private static void DictionaryPrefix(TechType techType, IDictionary customCollection, IDictionary craftDataCollection)
{
- if (smlCollection.TryGetValue(techType, out T sml))
+ if (customCollection.TryGetValue(techType, out T custom))
{
if (craftDataCollection.TryGetValue(techType, out T gameVal))
{
- if (!sml.Equals(gameVal))
- craftDataCollection[techType] = sml;
+ if (!custom.Equals(gameVal))
+ craftDataCollection[techType] = custom;
}
else
{
- PatchUtils.PatchDictionary(craftDataCollection, smlCollection);
+ PatchUtils.PatchDictionary(craftDataCollection, customCollection);
}
}
}
@@ -141,21 +140,21 @@ private static void NeedsPatchingCheckPrefix(TechType techType)
bool techExists = CraftData.techData.TryGetValue(techType, out CraftData.TechData techData);
bool sameData = false;
- if (techExists && CustomRecipeData.TryGetValue(techType, out ITechData smlTechData))
+ if (techExists && CustomRecipeData.TryGetValue(techType, out ITechData customTechData))
{
- sameData = smlTechData.craftAmount == techData.craftAmount &&
- smlTechData.ingredientCount == techData.ingredientCount &&
- smlTechData.linkedItemCount == techData.linkedItemCount;
+ sameData = customTechData.craftAmount == techData.craftAmount &&
+ customTechData.ingredientCount == techData.ingredientCount &&
+ customTechData.linkedItemCount == techData.linkedItemCount;
if (sameData)
- for (int i = 0; i < smlTechData.ingredientCount; i++)
+ for (int i = 0; i < customTechData.ingredientCount; i++)
{
- if (smlTechData.GetIngredient(i).techType != techData.GetIngredient(i).techType)
+ if (customTechData.GetIngredient(i).techType != techData.GetIngredient(i).techType)
{
sameData = false;
break;
}
- if (smlTechData.GetIngredient(i).amount != techData.GetIngredient(i).amount)
+ if (customTechData.GetIngredient(i).amount != techData.GetIngredient(i).amount)
{
sameData = false;
break;
@@ -163,9 +162,9 @@ private static void NeedsPatchingCheckPrefix(TechType techType)
}
if (sameData)
- for (int i = 0; i < smlTechData.linkedItemCount; i++)
+ for (int i = 0; i < customTechData.linkedItemCount; i++)
{
- if (smlTechData.GetLinkedItem(i) != techData.GetLinkedItem(i))
+ if (customTechData.GetLinkedItem(i) != techData.GetLinkedItem(i))
{
sameData = false;
break;
@@ -186,25 +185,25 @@ private static void PatchCustomTechData()
foreach (TechType techType in CustomRecipeData.Keys)
{
bool techExists = CraftData.techData.TryGetValue(techType, out CraftData.TechData techData);
- ITechData smlTechData = CustomRecipeData[techType];
+ ITechData customTechData = CustomRecipeData[techType];
bool sameData = false;
- if (techExists && smlTechData != null)
+ if (techExists && customTechData != null)
{
- sameData = smlTechData.craftAmount == techData.craftAmount &&
- smlTechData.ingredientCount == techData.ingredientCount &&
- smlTechData.linkedItemCount == techData.linkedItemCount;
+ sameData = customTechData.craftAmount == techData.craftAmount &&
+ customTechData.ingredientCount == techData.ingredientCount &&
+ customTechData.linkedItemCount == techData.linkedItemCount;
if (sameData)
- for (int i = 0; i < smlTechData.ingredientCount; i++)
+ for (int i = 0; i < customTechData.ingredientCount; i++)
{
- if (smlTechData.GetIngredient(i).techType != techData.GetIngredient(i).techType)
+ if (customTechData.GetIngredient(i).techType != techData.GetIngredient(i).techType)
{
sameData = false;
break;
}
- if (smlTechData.GetIngredient(i).amount != techData.GetIngredient(i).amount)
+ if (customTechData.GetIngredient(i).amount != techData.GetIngredient(i).amount)
{
sameData = false;
break;
@@ -212,9 +211,9 @@ private static void PatchCustomTechData()
}
if (sameData)
- for (int i = 0; i < smlTechData.linkedItemCount; i++)
+ for (int i = 0; i < customTechData.linkedItemCount; i++)
{
- if (smlTechData.GetLinkedItem(i) != techData.GetLinkedItem(i))
+ if (customTechData.GetLinkedItem(i) != techData.GetLinkedItem(i))
{
sameData = false;
break;
@@ -227,29 +226,29 @@ private static void PatchCustomTechData()
var techDataInstance = new CraftData.TechData
{
_techType = techType,
- _craftAmount = smlTechData?.craftAmount ?? 0
+ _craftAmount = customTechData?.craftAmount ?? 0
};
var ingredientsList = new CraftData.Ingredients();
- if (smlTechData?.ingredientCount > 0)
+ if (customTechData?.ingredientCount > 0)
{
- for (int i = 0; i < smlTechData.ingredientCount; i++)
+ for (int i = 0; i < customTechData.ingredientCount; i++)
{
- IIngredient smlIngredient = smlTechData.GetIngredient(i);
+ IIngredient customIngredient = customTechData.GetIngredient(i);
- var ingredient = new CraftData.Ingredient(smlIngredient.techType, smlIngredient.amount);
- ingredientsList.Add(smlIngredient.techType, smlIngredient.amount);
+ var ingredient = new CraftData.Ingredient(customIngredient.techType, customIngredient.amount);
+ ingredientsList.Add(customIngredient.techType, customIngredient.amount);
}
techDataInstance._ingredients = ingredientsList;
}
- if (smlTechData?.linkedItemCount > 0)
+ if (customTechData?.linkedItemCount > 0)
{
var linkedItems = new List();
- for (int l = 0; l < smlTechData.linkedItemCount; l++)
+ for (int l = 0; l < customTechData.linkedItemCount; l++)
{
- linkedItems.Add(smlTechData.GetLinkedItem(l));
+ linkedItems.Add(customTechData.GetLinkedItem(l));
}
techDataInstance._linkedItems = linkedItems;
}
diff --git a/SMLHelper/Patchers/CraftTreePatcher.cs b/Nautilus/Patchers/CraftTreePatcher.cs
similarity index 98%
rename from SMLHelper/Patchers/CraftTreePatcher.cs
rename to Nautilus/Patchers/CraftTreePatcher.cs
index ee4c8b3cc..838f78652 100644
--- a/SMLHelper/Patchers/CraftTreePatcher.cs
+++ b/Nautilus/Patchers/CraftTreePatcher.cs
@@ -1,12 +1,12 @@
-namespace SMLHelper.Patchers;
-
-using System.Collections.Generic;
+using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using BepInEx.Logging;
-using Crafting;
using HarmonyLib;
-using SMLHelper.Utility;
+using Nautilus.Crafting;
+using Nautilus.Utility;
+
+namespace Nautilus.Patchers;
internal class CraftTreePatcher
{
diff --git a/SMLHelper/Patchers/CustomSoundPatcher.cs b/Nautilus/Patchers/CustomSoundPatcher.cs
similarity index 99%
rename from SMLHelper/Patchers/CustomSoundPatcher.cs
rename to Nautilus/Patchers/CustomSoundPatcher.cs
index 85db6946c..2637b2d27 100644
--- a/SMLHelper/Patchers/CustomSoundPatcher.cs
+++ b/Nautilus/Patchers/CustomSoundPatcher.cs
@@ -1,14 +1,13 @@
-namespace SMLHelper.Patchers;
-
-using SMLHelper.FMod.Interfaces;
-using SMLHelper.Utility;
+using System.Collections.Generic;
using FMOD;
+using FMOD.Studio;
using FMODUnity;
using HarmonyLib;
-using System.Collections.Generic;
-using FMOD.Studio;
+using Nautilus.FMod.Interfaces;
+using Nautilus.Utility;
using UnityEngine;
+namespace Nautilus.Patchers;
internal class CustomSoundPatcher
{
diff --git a/SMLHelper/Patchers/EatablePatcher.cs b/Nautilus/Patchers/EatablePatcher.cs
similarity index 88%
rename from SMLHelper/Patchers/EatablePatcher.cs
rename to Nautilus/Patchers/EatablePatcher.cs
index 84bec41cd..624cbd2b7 100644
--- a/SMLHelper/Patchers/EatablePatcher.cs
+++ b/Nautilus/Patchers/EatablePatcher.cs
@@ -1,9 +1,11 @@
-namespace SMLHelper.Patchers;
-
+using System.Collections.Generic;
using HarmonyLib;
-using SMLHelper.Utility;
-using System.Collections.Generic;
-using static Handlers.EatableHandler;
+using Nautilus.Handlers;
+using Nautilus.Utility;
+
+namespace Nautilus.Patchers;
+
+using static EatableHandler;
internal class EatablePatcher
{
diff --git a/SMLHelper/Patchers/EnumPatcher.cs b/Nautilus/Patchers/EnumPatcher.cs
similarity index 98%
rename from SMLHelper/Patchers/EnumPatcher.cs
rename to Nautilus/Patchers/EnumPatcher.cs
index 7cc606157..353ac1977 100644
--- a/SMLHelper/Patchers/EnumPatcher.cs
+++ b/Nautilus/Patchers/EnumPatcher.cs
@@ -1,12 +1,11 @@
using System;
using System.Collections;
using System.Collections.Generic;
-using System.Linq;
using BepInEx.Logging;
using HarmonyLib;
-using SMLHelper.Utility;
+using Nautilus.Utility;
-namespace SMLHelper.Patchers;
+namespace Nautilus.Patchers;
internal static class EnumPatcher
{
diff --git a/SMLHelper/Patchers/ItemActionPatcher.cs b/Nautilus/Patchers/ItemActionPatcher.cs
similarity index 98%
rename from SMLHelper/Patchers/ItemActionPatcher.cs
rename to Nautilus/Patchers/ItemActionPatcher.cs
index e11b47ccf..9f627ed8e 100644
--- a/SMLHelper/Patchers/ItemActionPatcher.cs
+++ b/Nautilus/Patchers/ItemActionPatcher.cs
@@ -1,11 +1,11 @@
-namespace SMLHelper.Patchers;
-
-using BepInEx.Logging;
-using HarmonyLib;
-using SMLHelper.Utility;
-using System;
+using System;
using System.Collections.Generic;
using System.Text;
+using BepInEx.Logging;
+using HarmonyLib;
+using Nautilus.Utility;
+
+namespace Nautilus.Patchers;
internal class ItemActionPatcher
{
diff --git a/SMLHelper/Patchers/ItemsContainerPatcher.cs b/Nautilus/Patchers/ItemsContainerPatcher.cs
similarity index 97%
rename from SMLHelper/Patchers/ItemsContainerPatcher.cs
rename to Nautilus/Patchers/ItemsContainerPatcher.cs
index c365ec4c6..4cc2cfad8 100644
--- a/SMLHelper/Patchers/ItemsContainerPatcher.cs
+++ b/Nautilus/Patchers/ItemsContainerPatcher.cs
@@ -1,9 +1,9 @@
-namespace SMLHelper.Patchers;
-
+using System;
using BepInEx.Logging;
using HarmonyLib;
-using SMLHelper.Utility;
-using System;
+using Nautilus.Utility;
+
+namespace Nautilus.Patchers;
internal static class ItemsContainerPatcher
{
diff --git a/SMLHelper/Patchers/KnownTechPatcher.cs b/Nautilus/Patchers/KnownTechPatcher.cs
similarity index 98%
rename from SMLHelper/Patchers/KnownTechPatcher.cs
rename to Nautilus/Patchers/KnownTechPatcher.cs
index 599855b11..1bd1cf610 100644
--- a/SMLHelper/Patchers/KnownTechPatcher.cs
+++ b/Nautilus/Patchers/KnownTechPatcher.cs
@@ -1,9 +1,10 @@
-namespace SMLHelper.Patchers;
-
-using System;
+using System;
using System.Collections.Generic;
using System.Linq;
using HarmonyLib;
+using Nautilus.Utility;
+
+namespace Nautilus.Patchers;
internal class KnownTechPatcher
{
diff --git a/SMLHelper/Patchers/LanguagePatcher.cs b/Nautilus/Patchers/LanguagePatcher.cs
similarity index 96%
rename from SMLHelper/Patchers/LanguagePatcher.cs
rename to Nautilus/Patchers/LanguagePatcher.cs
index e3d09c2df..c990fd6ff 100644
--- a/SMLHelper/Patchers/LanguagePatcher.cs
+++ b/Nautilus/Patchers/LanguagePatcher.cs
@@ -1,15 +1,12 @@
-using System.Linq;
-
-namespace SMLHelper.Patchers;
-
-using System.Collections.Generic;
+using System.Collections.Generic;
using System.IO;
+using System.Linq;
using BepInEx.Logging;
using HarmonyLib;
-using Newtonsoft.Json;
-using Handlers;
+using Nautilus.Utility;
using UnityEngine;
-using Utility;
+
+namespace Nautilus.Patchers;
internal static class LanguagePatcher
{
diff --git a/SMLHelper/Patchers/LargeWorldStreamerPatcher.cs b/Nautilus/Patchers/LargeWorldStreamerPatcher.cs
similarity index 93%
rename from SMLHelper/Patchers/LargeWorldStreamerPatcher.cs
rename to Nautilus/Patchers/LargeWorldStreamerPatcher.cs
index a778c1d67..66ec97d13 100644
--- a/SMLHelper/Patchers/LargeWorldStreamerPatcher.cs
+++ b/Nautilus/Patchers/LargeWorldStreamerPatcher.cs
@@ -1,17 +1,16 @@
-namespace SMLHelper.Patchers;
-
-using SMLHelper.Utility;
using System;
-using System.Linq;
-
-using SMLHelper.Json.Converters;
using System.Collections.Generic;
using System.IO;
+using System.Linq;
using HarmonyLib;
-using SMLHelper.Handlers;
-using SMLHelper.MonoBehaviours;
-using UnityEngine;
+using Nautilus.Handlers;
+using Nautilus.Json.Converters;
+using Nautilus.MonoBehaviours;
+using Nautilus.Utility;
using Newtonsoft.Json;
+using UnityEngine;
+
+namespace Nautilus.Patchers;
// TODO: Add immediate spawner spawning to completely remove dependency before world init
internal class LargeWorldStreamerPatcher
@@ -34,7 +33,7 @@ private static void InitializePostfix()
{
InitializeSpawnInfos();
- string file = Path.Combine(SaveLoadManager.GetTemporarySavePath(), "CoordinatedSpawnsInitialized.smlhelper");
+ string file = Path.Combine(SaveLoadManager.GetTemporarySavePath(), "CoordinatedSpawnsInitialized.nautilus");
if (File.Exists(file))
{
InternalLogger.Debug("Coordinated Spawns already been spawned in the current save. Loading Data");
@@ -66,7 +65,7 @@ private static void InitializePostfix()
private static void SaveData()
{
- string file = Path.Combine(SaveLoadManager.GetTemporarySavePath(), "CoordinatedSpawnsInitialized.smlhelper");
+ string file = Path.Combine(SaveLoadManager.GetTemporarySavePath(), "CoordinatedSpawnsInitialized.nautilus");
using StreamWriter writer = new(file);
try
{
diff --git a/SMLHelper/Patchers/LootDistributionPatcher.cs b/Nautilus/Patchers/LootDistributionPatcher.cs
similarity index 98%
rename from SMLHelper/Patchers/LootDistributionPatcher.cs
rename to Nautilus/Patchers/LootDistributionPatcher.cs
index a9af54790..858ed9f94 100644
--- a/SMLHelper/Patchers/LootDistributionPatcher.cs
+++ b/Nautilus/Patchers/LootDistributionPatcher.cs
@@ -1,9 +1,9 @@
-namespace SMLHelper.Patchers;
-
-using SMLHelper.Utility;
-using System.Collections.Generic;
-using HarmonyLib;
+using System.Collections.Generic;
using BepInEx.Logging;
+using HarmonyLib;
+using Nautilus.Utility;
+
+namespace Nautilus.Patchers;
internal class LootDistributionPatcher
{
diff --git a/SMLHelper/Patchers/OptionsPanelPatcher.cs b/Nautilus/Patchers/OptionsPanelPatcher.cs
similarity index 98%
rename from SMLHelper/Patchers/OptionsPanelPatcher.cs
rename to Nautilus/Patchers/OptionsPanelPatcher.cs
index 370245330..493b9ac75 100644
--- a/SMLHelper/Patchers/OptionsPanelPatcher.cs
+++ b/Nautilus/Patchers/OptionsPanelPatcher.cs
@@ -1,17 +1,19 @@
-namespace SMLHelper.Patchers;
-
-using HarmonyLib;
-using Options;
+using System.Collections;
+using System.Collections.Generic;
using System.IO;
using System.Reflection;
-using System.Collections;
-using System.Collections.Generic;
+using HarmonyLib;
+using Nautilus.Options;
+using Nautilus.Utility;
+using Newtonsoft.Json;
+using TMPro;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
-using Newtonsoft.Json;
-using static SMLHelper.Options.ModKeybindOption;
-using TMPro;
+
+namespace Nautilus.Patchers;
+
+using static ModKeybindOption;
internal class OptionsPanelPatcher
{
@@ -83,8 +85,8 @@ internal static void AddTabs_Postfix(uGUI_OptionsPanel __instance)
modsTab = optionsPanel.AddTab("Mods");
}
- // Maybe this could be split into its own file to handle smlhelper options, or maybe it could be removed alltogether
- optionsPanel.AddHeading(modsTab, "SMLHelper");
+ // Maybe this could be split into its own file to handle nautilus options, or maybe it could be removed alltogether
+ optionsPanel.AddHeading(modsTab, "Nautilus");
optionsPanel.AddToggleOption(modsTab, "Enable debug logs", Utility.InternalLogger.EnableDebugging, Utility.InternalLogger.SetDebugging);
optionsPanel.AddChoiceOption(modsTab, "Extra item info", new string[]
{
diff --git a/SMLHelper/Patchers/PDAEncyclopediaPatcher.cs b/Nautilus/Patchers/PDAEncyclopediaPatcher.cs
similarity index 93%
rename from SMLHelper/Patchers/PDAEncyclopediaPatcher.cs
rename to Nautilus/Patchers/PDAEncyclopediaPatcher.cs
index d65fcaeb4..60d13ce36 100644
--- a/SMLHelper/Patchers/PDAEncyclopediaPatcher.cs
+++ b/Nautilus/Patchers/PDAEncyclopediaPatcher.cs
@@ -1,8 +1,8 @@
-namespace SMLHelper.Patchers;
-
+using System.Collections.Generic;
using HarmonyLib;
-using SMLHelper.Utility;
-using System.Collections.Generic;
+using Nautilus.Utility;
+
+namespace Nautilus.Patchers;
internal class PDAEncyclopediaPatcher
{
diff --git a/SMLHelper/Patchers/PDALogPatcher.cs b/Nautilus/Patchers/PDALogPatcher.cs
similarity index 93%
rename from SMLHelper/Patchers/PDALogPatcher.cs
rename to Nautilus/Patchers/PDALogPatcher.cs
index 1f864d473..1f3e365fd 100644
--- a/SMLHelper/Patchers/PDALogPatcher.cs
+++ b/Nautilus/Patchers/PDALogPatcher.cs
@@ -1,6 +1,7 @@
-namespace SMLHelper.Patchers;
-
using HarmonyLib;
+using Nautilus.Utility;
+
+namespace Nautilus.Patchers;
internal class PDALogPatcher
{
diff --git a/SMLHelper/Patchers/PdaPatcher.cs b/Nautilus/Patchers/PdaPatcher.cs
similarity index 97%
rename from SMLHelper/Patchers/PdaPatcher.cs
rename to Nautilus/Patchers/PdaPatcher.cs
index 0cea47000..93ccd877f 100644
--- a/SMLHelper/Patchers/PdaPatcher.cs
+++ b/Nautilus/Patchers/PdaPatcher.cs
@@ -1,9 +1,9 @@
-namespace SMLHelper.Patchers;
-
+using System.Collections.Generic;
using BepInEx.Logging;
using HarmonyLib;
-using SMLHelper.Utility;
-using System.Collections.Generic;
+using Nautilus.Utility;
+
+namespace Nautilus.Patchers;
// Special thanks to Gorillazilla9 for sharing this method of fragment count patching
// https://github.com/Gorillazilla9/SubnauticaFragReqBoost/blob/master/PDAScannerPatcher.cs
diff --git a/SMLHelper/Patchers/PrefabDatabasePatcher.cs b/Nautilus/Patchers/PrefabDatabasePatcher.cs
similarity index 98%
rename from SMLHelper/Patchers/PrefabDatabasePatcher.cs
rename to Nautilus/Patchers/PrefabDatabasePatcher.cs
index 69d3e7576..6c112965b 100644
--- a/SMLHelper/Patchers/PrefabDatabasePatcher.cs
+++ b/Nautilus/Patchers/PrefabDatabasePatcher.cs
@@ -1,19 +1,17 @@
-using SMLHelper.Handlers;
-
-namespace SMLHelper.Patchers;
-
-using System;
-using System.Reflection;
-using System.Reflection.Emit;
+using System;
using System.Collections;
using System.Collections.Generic;
-
-using Assets;
+using System.Reflection;
+using System.Reflection.Emit;
+using BepInEx.Logging;
using HarmonyLib;
+using Nautilus.Assets;
+using Nautilus.Handlers;
+using Nautilus.Utility;
using UnityEngine;
using UWE;
-using Utility;
-using BepInEx.Logging;
+
+namespace Nautilus.Patchers;
internal static class PrefabDatabasePatcher
{
diff --git a/SMLHelper/Patchers/SaveUtilsPatcher.cs b/Nautilus/Patchers/SaveUtilsPatcher.cs
similarity index 98%
rename from SMLHelper/Patchers/SaveUtilsPatcher.cs
rename to Nautilus/Patchers/SaveUtilsPatcher.cs
index 52aa98fb6..5842dd6ee 100644
--- a/SMLHelper/Patchers/SaveUtilsPatcher.cs
+++ b/Nautilus/Patchers/SaveUtilsPatcher.cs
@@ -1,10 +1,10 @@
-namespace SMLHelper.Patchers;
-
-using System;
+using System;
using System.Collections;
using System.Collections.Generic;
using HarmonyLib;
+namespace Nautilus.Patchers;
+
internal class SaveUtilsPatcher
{
private static readonly List oneTimeUseOnSaveEvents = new();
diff --git a/SMLHelper/Patchers/SpritePatcher.cs b/Nautilus/Patchers/SpritePatcher.cs
similarity index 95%
rename from SMLHelper/Patchers/SpritePatcher.cs
rename to Nautilus/Patchers/SpritePatcher.cs
index 1fcc9cb05..85a16ba70 100644
--- a/SMLHelper/Patchers/SpritePatcher.cs
+++ b/Nautilus/Patchers/SpritePatcher.cs
@@ -1,15 +1,12 @@
-namespace SMLHelper.Patchers;
-
-using SMLHelper.Utility;
-using System;
-using System.Collections;
+using System;
using System.Collections.Generic;
using System.Reflection;
-using SMLHelper.Assets;
-using SMLHelper.Handlers;
using HarmonyLib;
-using UnityEngine;
-using UWE;
+using Nautilus.Assets;
+using Nautilus.Utility;
+using Nautilus.Handlers;
+
+namespace Nautilus.Patchers;
#if SUBNAUTICA
using Sprite = Atlas.Sprite;
diff --git a/SMLHelper/Patchers/SurvivalPatcher.cs b/Nautilus/Patchers/SurvivalPatcher.cs
similarity index 97%
rename from SMLHelper/Patchers/SurvivalPatcher.cs
rename to Nautilus/Patchers/SurvivalPatcher.cs
index 7ceb33dff..00ae3f77d 100644
--- a/SMLHelper/Patchers/SurvivalPatcher.cs
+++ b/Nautilus/Patchers/SurvivalPatcher.cs
@@ -1,11 +1,11 @@
-namespace SMLHelper.Patchers;
-
-using SMLHelper.Utility;
using System;
using System.Collections.Generic;
+using BepInEx.Logging;
using HarmonyLib;
+using Nautilus.Utility;
using UnityEngine;
-using BepInEx.Logging;
+
+namespace Nautilus.Patchers;
internal class SurvivalPatcher
{
diff --git a/SMLHelper/Patchers/TooltipPatcher.cs b/Nautilus/Patchers/TooltipPatcher.cs
similarity index 93%
rename from SMLHelper/Patchers/TooltipPatcher.cs
rename to Nautilus/Patchers/TooltipPatcher.cs
index a694cdf48..bb127747d 100644
--- a/SMLHelper/Patchers/TooltipPatcher.cs
+++ b/Nautilus/Patchers/TooltipPatcher.cs
@@ -1,15 +1,12 @@
-namespace SMLHelper.Patchers;
-
-using HarmonyLib;
-using Handlers;
-using System.IO;
+using System.IO;
using System.Reflection;
using System.Text;
-using System.Linq;
-using System.Collections.Generic;
-using Utility;
using BepInEx.Logging;
-using System;
+using HarmonyLib;
+using Nautilus.Handlers;
+using Nautilus.Utility;
+
+namespace Nautilus.Patchers;
internal class TooltipPatcher
{
@@ -60,7 +57,7 @@ internal static void CustomTooltip(StringBuilder sb, TechType techType)
}
else
{
- WriteModNameError(sb, "Unknown Mod", "Item added without SMLHelper");
+ WriteModNameError(sb, "Unknown Mod", "Item added without Nautilus");
}
}
@@ -140,10 +137,10 @@ internal static void Initialize()
Initialized = true;
- var smlFolder = Path.Combine(BepInEx.Paths.ConfigPath, Assembly.GetExecutingAssembly().GetName().Name);
- Directory.CreateDirectory(smlFolder);
+ var nautilusFolder = Path.Combine(BepInEx.Paths.ConfigPath, Assembly.GetExecutingAssembly().GetName().Name);
+ Directory.CreateDirectory(nautilusFolder);
- var configPath = Path.Combine(smlFolder, "ExtraItemInfo.txt");
+ var configPath = Path.Combine(nautilusFolder, "ExtraItemInfo.txt");
if (!File.Exists(configPath))
{
diff --git a/SMLHelper/Patchers/WorldEntityDatabasePatcher.cs b/Nautilus/Patchers/WorldEntityDatabasePatcher.cs
similarity index 91%
rename from SMLHelper/Patchers/WorldEntityDatabasePatcher.cs
rename to Nautilus/Patchers/WorldEntityDatabasePatcher.cs
index 927cbfc5e..97ec3a685 100644
--- a/SMLHelper/Patchers/WorldEntityDatabasePatcher.cs
+++ b/Nautilus/Patchers/WorldEntityDatabasePatcher.cs
@@ -1,9 +1,10 @@
-namespace SMLHelper.Patchers;
-
-using System.Collections.Generic;
+using System.Collections.Generic;
using HarmonyLib;
+using Nautilus.Utility;
using UWE;
+namespace Nautilus.Patchers;
+
internal class WorldEntityDatabasePatcher
{
internal static readonly SelfCheckingDictionary CustomWorldEntityInfos = new("CustomWorldEntityInfo");
diff --git a/SMLHelper/Properties/AssemblyInfo.cs b/Nautilus/Properties/AssemblyInfo.cs
similarity index 91%
rename from SMLHelper/Properties/AssemblyInfo.cs
rename to Nautilus/Properties/AssemblyInfo.cs
index 64c1aa26a..7319ae752 100644
--- a/SMLHelper/Properties/AssemblyInfo.cs
+++ b/Nautilus/Properties/AssemblyInfo.cs
@@ -9,5 +9,5 @@
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("418502dd-372d-4ef9-8021-b262552dfede")]
-[assembly: InternalsVisibleTo("SMLHelper.Tests")]
+[assembly: InternalsVisibleTo("Nautilus.Tests")]
[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]
diff --git a/SMLHelper/Utility/AudioUtils.cs b/Nautilus/Utility/AudioUtils.cs
similarity index 99%
rename from SMLHelper/Utility/AudioUtils.cs
rename to Nautilus/Utility/AudioUtils.cs
index d3a437fe6..59750ea66 100644
--- a/SMLHelper/Utility/AudioUtils.cs
+++ b/Nautilus/Utility/AudioUtils.cs
@@ -1,6 +1,4 @@
-namespace SMLHelper.Utility;
-
-using System;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
@@ -9,6 +7,8 @@
using FMODUnity;
using UnityEngine;
+namespace Nautilus.Utility;
+
///
/// Utilities for audio and sound
///
diff --git a/SMLHelper/Utility/AudioUtils_BelowZero.cs b/Nautilus/Utility/AudioUtils_BelowZero.cs
similarity index 98%
rename from SMLHelper/Utility/AudioUtils_BelowZero.cs
rename to Nautilus/Utility/AudioUtils_BelowZero.cs
index 2f6daebbd..da97ad8ff 100644
--- a/SMLHelper/Utility/AudioUtils_BelowZero.cs
+++ b/Nautilus/Utility/AudioUtils_BelowZero.cs
@@ -1,5 +1,5 @@
#if BELOWZERO
-namespace SMLHelper.Utility
+namespace Nautilus.Utility
{
public static partial class AudioUtils
{
diff --git a/SMLHelper/Utility/AudioUtils_Subnautica.cs b/Nautilus/Utility/AudioUtils_Subnautica.cs
similarity index 98%
rename from SMLHelper/Utility/AudioUtils_Subnautica.cs
rename to Nautilus/Utility/AudioUtils_Subnautica.cs
index e0911d2f6..e63fff5d3 100644
--- a/SMLHelper/Utility/AudioUtils_Subnautica.cs
+++ b/Nautilus/Utility/AudioUtils_Subnautica.cs
@@ -1,5 +1,5 @@
#if SUBNAUTICA
-namespace SMLHelper.Utility
+namespace Nautilus.Utility
{
public static partial class AudioUtils
{
diff --git a/SMLHelper/Utility/BasicText.cs b/Nautilus/Utility/BasicText.cs
similarity index 99%
rename from SMLHelper/Utility/BasicText.cs
rename to Nautilus/Utility/BasicText.cs
index bfce51b1d..3bd467b45 100644
--- a/SMLHelper/Utility/BasicText.cs
+++ b/Nautilus/Utility/BasicText.cs
@@ -1,8 +1,8 @@
-namespace SMLHelper.Utility;
-
+using TMPro;
using UnityEngine;
using UnityEngine.UI;
-using TMPro;
+
+namespace Nautilus.Utility;
///
///
diff --git a/SMLHelper/Utility/EnumCacheManager.cs b/Nautilus/Utility/EnumCacheManager.cs
similarity index 99%
rename from SMLHelper/Utility/EnumCacheManager.cs
rename to Nautilus/Utility/EnumCacheManager.cs
index 769172f7b..d3b6cbab1 100644
--- a/SMLHelper/Utility/EnumCacheManager.cs
+++ b/Nautilus/Utility/EnumCacheManager.cs
@@ -1,6 +1,4 @@
-namespace SMLHelper.Utility;
-
-using System;
+using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
@@ -9,6 +7,8 @@
using System.Text;
using BepInEx;
+namespace Nautilus.Utility;
+
internal class EnumTypeCache
{
internal int Index;
diff --git a/SMLHelper/Utility/ExtBannedIdManager.cs b/Nautilus/Utility/ExtBannedIdManager.cs
similarity index 98%
rename from SMLHelper/Utility/ExtBannedIdManager.cs
rename to Nautilus/Utility/ExtBannedIdManager.cs
index 7b99ba59d..dd22f9d73 100644
--- a/SMLHelper/Utility/ExtBannedIdManager.cs
+++ b/Nautilus/Utility/ExtBannedIdManager.cs
@@ -1,12 +1,12 @@
-namespace SMLHelper.Utility;
-
-using System;
+using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using BepInEx.Logging;
+namespace Nautilus.Utility;
+
///
/// This class is tasked with checking external txt files for banned IDs that are not to be isssued when patching in new enum entries.
///
@@ -78,7 +78,7 @@ private static void LoadFromFiles()
foreach (string filePath in files) // An empty directory will skip over this
{
- // Each file in this directory represents a list of enum IDs that have been patched from outside of SMLHelper.
+ // Each file in this directory represents a list of enum IDs that have been patched from outside of Nautilus.
// Normally, this means that each file will represent one specific mod.
// This would also be user configurable so warning must be issued to the user not to alter these files.
diff --git a/SMLHelper/Utility/IOUtilities.cs b/Nautilus/Utility/IOUtilities.cs
similarity index 92%
rename from SMLHelper/Utility/IOUtilities.cs
rename to Nautilus/Utility/IOUtilities.cs
index ad6f90804..83202015c 100644
--- a/SMLHelper/Utility/IOUtilities.cs
+++ b/Nautilus/Utility/IOUtilities.cs
@@ -1,6 +1,6 @@
-namespace SMLHelper.Utility;
+using System.IO;
-using System.IO;
+namespace Nautilus.Utility;
///
/// Utilities for files and paths
diff --git a/SMLHelper/Utility/ImageUtils.cs b/Nautilus/Utility/ImageUtils.cs
similarity index 98%
rename from SMLHelper/Utility/ImageUtils.cs
rename to Nautilus/Utility/ImageUtils.cs
index 8bb0bbb33..42d0ded36 100644
--- a/SMLHelper/Utility/ImageUtils.cs
+++ b/Nautilus/Utility/ImageUtils.cs
@@ -1,8 +1,9 @@
-namespace SMLHelper.Utility;
-
-using System.IO;
+using System.IO;
using BepInEx.Logging;
using UnityEngine;
+
+namespace Nautilus.Utility;
+
using Logger = InternalLogger;
#if SUBNAUTICA
using Sprite = Atlas.Sprite;
diff --git a/SMLHelper/Utility/InternalLogger.cs b/Nautilus/Utility/InternalLogger.cs
similarity index 97%
rename from SMLHelper/Utility/InternalLogger.cs
rename to Nautilus/Utility/InternalLogger.cs
index 9b85fe34f..a11fc0897 100644
--- a/SMLHelper/Utility/InternalLogger.cs
+++ b/Nautilus/Utility/InternalLogger.cs
@@ -1,12 +1,12 @@
-namespace SMLHelper.Utility;
-
+using System;
using System.Linq;
-using System;
using System.Reflection;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using BepInEx.Logging;
+namespace Nautilus.Utility;
+
internal static class InternalLogger
{
internal static bool Initialized = false;
@@ -120,7 +120,7 @@ internal static void Log(string text, LogLevel level = LogLevel.Info)
{
if(level >= LogLevel.Info || EnableDebugging)
{
- Console.WriteLine($"[SMLHelper/{level}] {text}");
+ Console.WriteLine($"[Nautilus/{level}] {text}");
}
return;
diff --git a/SMLHelper/Utility/ItemStorageHelper.cs b/Nautilus/Utility/ItemStorageHelper.cs
similarity index 99%
rename from SMLHelper/Utility/ItemStorageHelper.cs
rename to Nautilus/Utility/ItemStorageHelper.cs
index bee09e908..2510116bb 100644
--- a/SMLHelper/Utility/ItemStorageHelper.cs
+++ b/Nautilus/Utility/ItemStorageHelper.cs
@@ -1,6 +1,6 @@
-namespace SMLHelper.Utility;
+using System.Collections.Generic;
-using System.Collections.Generic;
+namespace Nautilus.Utility;
///
/// A utility class that offers additional info about instances.
diff --git a/SMLHelper/Utility/JsonUtils.cs b/Nautilus/Utility/JsonUtils.cs
similarity index 99%
rename from SMLHelper/Utility/JsonUtils.cs
rename to Nautilus/Utility/JsonUtils.cs
index 294488c91..40a9c8e87 100644
--- a/SMLHelper/Utility/JsonUtils.cs
+++ b/Nautilus/Utility/JsonUtils.cs
@@ -1,13 +1,13 @@
-namespace SMLHelper.Utility;
-
-using System;
-using System.IO;
+using System;
using System.Globalization;
+using System.IO;
+using System.Reflection;
using System.Text;
using System.Threading;
-using System.Reflection;
-using Newtonsoft.Json;
using BepInEx.Logging;
+using Newtonsoft.Json;
+
+namespace Nautilus.Utility;
///
/// A collection of utilities for interacting with JSON files.
diff --git a/SMLHelper/Utility/KeyCodeUtils.cs b/Nautilus/Utility/KeyCodeUtils.cs
similarity index 99%
rename from SMLHelper/Utility/KeyCodeUtils.cs
rename to Nautilus/Utility/KeyCodeUtils.cs
index 46f471397..99ef0e670 100644
--- a/SMLHelper/Utility/KeyCodeUtils.cs
+++ b/Nautilus/Utility/KeyCodeUtils.cs
@@ -1,9 +1,9 @@
-namespace SMLHelper.Utility;
-
-using System;
+using System;
using BepInEx.Logging;
using UnityEngine;
+namespace Nautilus.Utility;
+
///
/// A collection of related utility methods.
///
diff --git a/SMLHelper/Utility/MaterialModifiers/ColorModifier.cs b/Nautilus/Utility/MaterialModifiers/ColorModifier.cs
similarity index 93%
rename from SMLHelper/Utility/MaterialModifiers/ColorModifier.cs
rename to Nautilus/Utility/MaterialModifiers/ColorModifier.cs
index 723cab7dc..915b72aaf 100644
--- a/SMLHelper/Utility/MaterialModifiers/ColorModifier.cs
+++ b/Nautilus/Utility/MaterialModifiers/ColorModifier.cs
@@ -1,6 +1,6 @@
using UnityEngine;
-namespace SMLHelper.Utility.MaterialModifiers;
+namespace Nautilus.Utility.MaterialModifiers;
///
/// Basic material modifier that sets the property on all materials.
diff --git a/SMLHelper/Utility/MaterialModifiers/MaterialModifier.cs b/Nautilus/Utility/MaterialModifiers/MaterialModifier.cs
similarity index 96%
rename from SMLHelper/Utility/MaterialModifiers/MaterialModifier.cs
rename to Nautilus/Utility/MaterialModifiers/MaterialModifier.cs
index 0510da3be..801ebeb08 100644
--- a/SMLHelper/Utility/MaterialModifiers/MaterialModifier.cs
+++ b/Nautilus/Utility/MaterialModifiers/MaterialModifier.cs
@@ -1,6 +1,6 @@
-namespace SMLHelper.Utility.MaterialModifiers;
+using UnityEngine;
-using UnityEngine;
+namespace Nautilus.Utility.MaterialModifiers;
///
/// Base class for material modifiers. Can be overriden to implement custom behaviour.
diff --git a/SMLHelper/Utility/MaterialUtils.cs b/Nautilus/Utility/MaterialUtils.cs
similarity index 99%
rename from SMLHelper/Utility/MaterialUtils.cs
rename to Nautilus/Utility/MaterialUtils.cs
index 4d0fbb100..cbbf91210 100644
--- a/SMLHelper/Utility/MaterialUtils.cs
+++ b/Nautilus/Utility/MaterialUtils.cs
@@ -1,8 +1,8 @@
-namespace SMLHelper.Utility;
-
-using MaterialModifiers;
+using Nautilus.Utility.MaterialModifiers;
using UnityEngine;
+namespace Nautilus.Utility;
+
///
/// Utilities related to Materials and Shaders.
///
diff --git a/SMLHelper/Utility/MaterialUtils_Subnautica.cs b/Nautilus/Utility/MaterialUtils_Subnautica.cs
similarity index 98%
rename from SMLHelper/Utility/MaterialUtils_Subnautica.cs
rename to Nautilus/Utility/MaterialUtils_Subnautica.cs
index f71b16058..6c3611c5d 100644
--- a/SMLHelper/Utility/MaterialUtils_Subnautica.cs
+++ b/Nautilus/Utility/MaterialUtils_Subnautica.cs
@@ -1,10 +1,10 @@
-#if SUBNAUTICA
-namespace SMLHelper.Utility;
-
-using System.Collections;
+using System.Collections;
using UnityEngine;
using UWE;
+#if SUBNAUTICA
+namespace Nautilus.Utility;
+
public static partial class MaterialUtils
{
private static void PatchInternal()
diff --git a/SMLHelper/Utility/PatchUtils.cs b/Nautilus/Utility/PatchUtils.cs
similarity index 85%
rename from SMLHelper/Utility/PatchUtils.cs
rename to Nautilus/Utility/PatchUtils.cs
index 0e2598ed9..421bf609a 100644
--- a/SMLHelper/Utility/PatchUtils.cs
+++ b/Nautilus/Utility/PatchUtils.cs
@@ -1,25 +1,25 @@
-namespace SMLHelper;
-
-using System;
-using System.Reflection;
-using System.Diagnostics;
+using System;
using System.Collections.Generic;
+using System.Diagnostics;
+using System.Reflection;
using System.Runtime.CompilerServices;
using HarmonyLib;
+namespace Nautilus.Utility;
+
internal static class PatchUtils
{
- internal static void PatchDictionary(IDictionary original, IDictionary patches)
+ internal static void PatchDictionary(IDictionary original, IDictionary patches)
{
- foreach (KeyValuePair entry in patches)
+ foreach (KeyValuePair entry in patches)
{
original[entry.Key] = entry.Value;
}
}
- internal static void PatchList(IList original, IList patches)
+ internal static void PatchList(IList original, IList patches)
{
- foreach (ValueType entry in patches)
+ foreach (T entry in patches)
{
original.Add(entry);
}
diff --git a/SMLHelper/Utility/PlayerPrefsExtra.cs b/Nautilus/Utility/PlayerPrefsExtra.cs
similarity index 99%
rename from SMLHelper/Utility/PlayerPrefsExtra.cs
rename to Nautilus/Utility/PlayerPrefsExtra.cs
index 0ff290244..3a4e7690a 100644
--- a/SMLHelper/Utility/PlayerPrefsExtra.cs
+++ b/Nautilus/Utility/PlayerPrefsExtra.cs
@@ -1,6 +1,6 @@
-namespace SMLHelper.Utility;
+using UnityEngine;
-using UnityEngine;
+namespace Nautilus.Utility;
///
/// A collection of utility methods that simplify calls into for quick custom save data.
diff --git a/SMLHelper/Utility/PrefabUtils.cs b/Nautilus/Utility/PrefabUtils.cs
similarity index 98%
rename from SMLHelper/Utility/PrefabUtils.cs
rename to Nautilus/Utility/PrefabUtils.cs
index 0ecde87ef..587401810 100644
--- a/SMLHelper/Utility/PrefabUtils.cs
+++ b/Nautilus/Utility/PrefabUtils.cs
@@ -1,7 +1,6 @@
-namespace SMLHelper.Utility;
+using UnityEngine;
-using System;
-using UnityEngine;
+namespace Nautilus.Utility;
///
/// Defines how a constructable can be placed.
diff --git a/SMLHelper/Utility/ReflectionHelper.cs b/Nautilus/Utility/ReflectionHelper.cs
similarity index 97%
rename from SMLHelper/Utility/ReflectionHelper.cs
rename to Nautilus/Utility/ReflectionHelper.cs
index 2284c6f8e..32e8dac14 100644
--- a/SMLHelper/Utility/ReflectionHelper.cs
+++ b/Nautilus/Utility/ReflectionHelper.cs
@@ -1,8 +1,8 @@
-namespace SMLHelper.Utility;
-
-using System.Diagnostics;
+using System.Diagnostics;
using System.Reflection;
+namespace Nautilus.Utility;
+
///
/// An extension method class for simplifying reflection calls for improved readability.
///
@@ -188,7 +188,7 @@ public static void CopyFields(this T original, T copy, BindingFlags bindingFl
}
}
- private static readonly Assembly smlHelperAssembly = Assembly.GetExecutingAssembly();
+ private static readonly Assembly nautilusAssembly = Assembly.GetExecutingAssembly();
internal static string CallingAssemblyNameByStackTrace()
{
@@ -203,14 +203,14 @@ internal static Assembly CallingAssemblyByStackTrace()
{
Assembly ownerAssembly = stackFrame.GetMethod().DeclaringType.Assembly;
if(ownerAssembly.GetName().Name.StartsWith("Unity"))
- return smlHelperAssembly;
+ return nautilusAssembly;
- if (ownerAssembly != smlHelperAssembly)
+ if (ownerAssembly != nautilusAssembly)
{
return ownerAssembly;
}
}
- return smlHelperAssembly;
+ return nautilusAssembly;
}
}
\ No newline at end of file
diff --git a/SMLHelper/Utility/SaveUtils.cs b/Nautilus/Utility/SaveUtils.cs
similarity index 98%
rename from SMLHelper/Utility/SaveUtils.cs
rename to Nautilus/Utility/SaveUtils.cs
index 3489c4201..143e5bccd 100644
--- a/SMLHelper/Utility/SaveUtils.cs
+++ b/Nautilus/Utility/SaveUtils.cs
@@ -1,7 +1,7 @@
-namespace SMLHelper.Utility;
+using System;
+using Nautilus.Patchers;
-using System;
-using SMLHelper.Patchers;
+namespace Nautilus.Utility;
///
/// A small collection of save data related utilities.
diff --git a/SMLHelper/Utility/SelfCheckingDictionary.cs b/Nautilus/Utility/SelfCheckingDictionary.cs
similarity index 99%
rename from SMLHelper/Utility/SelfCheckingDictionary.cs
rename to Nautilus/Utility/SelfCheckingDictionary.cs
index 249dda10d..9bb929d6b 100644
--- a/SMLHelper/Utility/SelfCheckingDictionary.cs
+++ b/Nautilus/Utility/SelfCheckingDictionary.cs
@@ -1,9 +1,8 @@
-namespace SMLHelper.Patchers;
-
-using System;
+using System;
using System.Collections;
using System.Collections.Generic;
-using SMLHelper.Utility;
+
+namespace Nautilus.Utility;
///
/// This dictionary strtucture automatically checks for duplicate keys as they are being added to the collection.
diff --git a/SMLHelper/Utility/StorageHelperExtensions.cs b/Nautilus/Utility/StorageHelperExtensions.cs
similarity index 98%
rename from SMLHelper/Utility/StorageHelperExtensions.cs
rename to Nautilus/Utility/StorageHelperExtensions.cs
index f2350592d..77fff58b7 100644
--- a/SMLHelper/Utility/StorageHelperExtensions.cs
+++ b/Nautilus/Utility/StorageHelperExtensions.cs
@@ -1,6 +1,6 @@
-namespace SMLHelper.Utility;
+using System.Collections.Generic;
-using System.Collections.Generic;
+namespace Nautilus.Utility;
///
/// Extension methods to provide static calls for into methods.
diff --git a/PostBuild.targets b/PostBuild.targets
index 6c7c0b6a1..6b3968e5d 100644
--- a/PostBuild.targets
+++ b/PostBuild.targets
@@ -2,15 +2,12 @@
- SMLib
- SMLHelper_BZ
+ Nautilus
$(OutDir)\plugins
$([System.IO.Path]::Combine('$(PluginsDir)', '$(BuildPath)'))
- $([System.IO.Path]::Combine('$(TargetDir)', 'SMLHelper_$(ConfigurationName).zip'))
- $([System.IO.Path]::Combine('$(TargetDir)', 'SMLHelper_$(ConfigurationName)_Thunderstore.zip'))
+ $([System.IO.Path]::Combine('$(TargetDir)', 'Nautilus_$(ConfigurationName).zip'))
$([System.IO.Path]::Combine('$(OutDir)', 'TemporaryDir'))
$([System.IO.Path]::Combine('$(TemporaryDir)', 'Build'))
- $([System.IO.Path]::Combine('$(TemporaryDir)', 'Thunderstore'))
@@ -27,30 +24,20 @@
-
-
-
-
-
-
+
-
-
-
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 000000000..9119380d6
--- /dev/null
+++ b/README.md
@@ -0,0 +1,23 @@
+# Nautilus: Subnautica Modding API
+
+## About
+Nautilus is a modding library that aims on enhancing developer productivity by offering common helper utilities as easy to use and robust as possible.
+
+Nautilus offers systems such as adding/editing items, icons, spawns, sounds and so much more!
+
+## Installation
+1. Download [BepInEx](https://www.nexusmods.com/subnautica/mods/1108).
+ Install it by extracting the content of the zip into your Subnautica folder (usually `C:\Program Files (x86)\Steam\steamapps\common\Subnautica`)
+2. Download Nautilus from either [Nexus Mods](https://www.youtube.com/watch?v=dQw4w9WgXcQ), [Submodica](https://www.youtube.com/watch?v=dQw4w9WgXcQ) or GitHub Releases.
+ Drag and drop the `plugins` folder in the zip into your BepInEx folder.
+
+If you got trouble installing the mod, please join our [Discord server](https://discord.gg/UpWuWwq).
+
+## Links
+* [Documentation](https://subnauticamodding.github.io/Nautilus) ([source](https://github.com/SubnauticaModding/Nautilus/tree/docs/Nautilus/Documentation))
+* [Update To Nautilus From SMLHelper](https://subnauticamodding.github.io/Nautilus/guides/sml2-to-nautilus.html)
+* [Subnautica Modding Discord Server](https://discord.gg/UpWuWwq)
+
+## Contributing
+Please read through our [Contribution Guidelines](CONTRIBUTING.md) before submitting a pull request. We welcome all kinds of contributions.
+If you have an idea for a feature or a bug fix to report but are not capable of writing code, [submit an issue](https://github.com/SubnauticaModding/Nautilus/issues/new) instead.
\ No newline at end of file
diff --git a/SMLHelper.sln b/SMLHelper.sln
deleted file mode 100644
index 92b6f8599..000000000
--- a/SMLHelper.sln
+++ /dev/null
@@ -1,87 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 17
-VisualStudioVersion = 17.1.32210.238
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SMLHelper", "SMLHelper\SMLHelper.csproj", "{418502DD-372D-4EF9-8021-B262552DFEDE}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Example mod", "Example mod\Example mod.csproj", "{C8FB0981-77D2-47C7-BBEF-A3A9EBACACBF}"
- ProjectSection(ProjectDependencies) = postProject
- {418502DD-372D-4EF9-8021-B262552DFEDE} = {418502DD-372D-4EF9-8021-B262552DFEDE}
- EndProjectSection
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{5152F028-6D03-43C0-88C5-986313017D4F}"
- ProjectSection(SolutionItems) = preProject
- common.props = common.props
- Version.targets = Version.targets
- EndProjectSection
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Thunderstore Metadata", "Thunderstore Metadata", "{3630BD6E-A8B0-4FE9-9027-E09666CFF9EA}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "BZ.EXP", "BZ.EXP", "{1C8C260D-E424-4CBD-B47B-A26809385EB1}"
- ProjectSection(SolutionItems) = preProject
- SMLHelper\ThunderstoreMetadata\BZ.EXP\icon.png = SMLHelper\ThunderstoreMetadata\BZ.EXP\icon.png
- SMLHelper\ThunderstoreMetadata\BZ.EXP\manifest.json = SMLHelper\ThunderstoreMetadata\BZ.EXP\manifest.json
- SMLHelper\ThunderstoreMetadata\BZ.EXP\README.md = SMLHelper\ThunderstoreMetadata\BZ.EXP\README.md
- EndProjectSection
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "BZ.STABLE", "BZ.STABLE", "{A31ABC1E-22A8-4F0E-AD41-8627F45A2882}"
- ProjectSection(SolutionItems) = preProject
- SMLHelper\ThunderstoreMetadata\BZ.STABLE\icon.png = SMLHelper\ThunderstoreMetadata\BZ.STABLE\icon.png
- SMLHelper\ThunderstoreMetadata\BZ.STABLE\manifest.json = SMLHelper\ThunderstoreMetadata\BZ.STABLE\manifest.json
- SMLHelper\ThunderstoreMetadata\BZ.STABLE\README.md = SMLHelper\ThunderstoreMetadata\BZ.STABLE\README.md
- EndProjectSection
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SN.EXP", "SN.EXP", "{D04E3334-8652-492C-BD21-5D294D6246D9}"
- ProjectSection(SolutionItems) = preProject
- SMLHelper\ThunderstoreMetadata\SN.EXP\icon.png = SMLHelper\ThunderstoreMetadata\SN.EXP\icon.png
- SMLHelper\ThunderstoreMetadata\SN.EXP\manifest.json = SMLHelper\ThunderstoreMetadata\SN.EXP\manifest.json
- SMLHelper\ThunderstoreMetadata\SN.EXP\README.md = SMLHelper\ThunderstoreMetadata\SN.EXP\README.md
- EndProjectSection
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SN.STABLE", "SN.STABLE", "{708BB5A4-9239-47D8-B73A-D124E994630B}"
- ProjectSection(SolutionItems) = preProject
- SMLHelper\ThunderstoreMetadata\SN.STABLE\icon.png = SMLHelper\ThunderstoreMetadata\SN.STABLE\icon.png
- SMLHelper\ThunderstoreMetadata\SN.STABLE\manifest.json = SMLHelper\ThunderstoreMetadata\SN.STABLE\manifest.json
- SMLHelper\ThunderstoreMetadata\SN.STABLE\README.md = SMLHelper\ThunderstoreMetadata\SN.STABLE\README.md
- EndProjectSection
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- BZ.EXP|Any CPU = BZ.EXP|Any CPU
- BZ.STABLE|Any CPU = BZ.STABLE|Any CPU
- SN.EXP|Any CPU = SN.EXP|Any CPU
- SN.STABLE|Any CPU = SN.STABLE|Any CPU
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {418502DD-372D-4EF9-8021-B262552DFEDE}.BZ.EXP|Any CPU.ActiveCfg = BZ.EXP|Any CPU
- {418502DD-372D-4EF9-8021-B262552DFEDE}.BZ.EXP|Any CPU.Build.0 = BZ.EXP|Any CPU
- {418502DD-372D-4EF9-8021-B262552DFEDE}.BZ.STABLE|Any CPU.ActiveCfg = BZ.STABLE|Any CPU
- {418502DD-372D-4EF9-8021-B262552DFEDE}.BZ.STABLE|Any CPU.Build.0 = BZ.STABLE|Any CPU
- {418502DD-372D-4EF9-8021-B262552DFEDE}.SN.EXP|Any CPU.ActiveCfg = SN.EXP|Any CPU
- {418502DD-372D-4EF9-8021-B262552DFEDE}.SN.EXP|Any CPU.Build.0 = SN.EXP|Any CPU
- {418502DD-372D-4EF9-8021-B262552DFEDE}.SN.STABLE|Any CPU.ActiveCfg = SN.STABLE|Any CPU
- {418502DD-372D-4EF9-8021-B262552DFEDE}.SN.STABLE|Any CPU.Build.0 = SN.STABLE|Any CPU
- {C8FB0981-77D2-47C7-BBEF-A3A9EBACACBF}.BZ.EXP|Any CPU.ActiveCfg = BZ.EXP|Any CPU
- {C8FB0981-77D2-47C7-BBEF-A3A9EBACACBF}.BZ.EXP|Any CPU.Build.0 = BZ.EXP|Any CPU
- {C8FB0981-77D2-47C7-BBEF-A3A9EBACACBF}.BZ.STABLE|Any CPU.ActiveCfg = BZ.STABLE|Any CPU
- {C8FB0981-77D2-47C7-BBEF-A3A9EBACACBF}.BZ.STABLE|Any CPU.Build.0 = BZ.STABLE|Any CPU
- {C8FB0981-77D2-47C7-BBEF-A3A9EBACACBF}.SN.EXP|Any CPU.ActiveCfg = SN.EXP|Any CPU
- {C8FB0981-77D2-47C7-BBEF-A3A9EBACACBF}.SN.EXP|Any CPU.Build.0 = SN.EXP|Any CPU
- {C8FB0981-77D2-47C7-BBEF-A3A9EBACACBF}.SN.STABLE|Any CPU.ActiveCfg = SN.STABLE|Any CPU
- {C8FB0981-77D2-47C7-BBEF-A3A9EBACACBF}.SN.STABLE|Any CPU.Build.0 = SN.STABLE|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(NestedProjects) = preSolution
- {3630BD6E-A8B0-4FE9-9027-E09666CFF9EA} = {5152F028-6D03-43C0-88C5-986313017D4F}
- {1C8C260D-E424-4CBD-B47B-A26809385EB1} = {3630BD6E-A8B0-4FE9-9027-E09666CFF9EA}
- {A31ABC1E-22A8-4F0E-AD41-8627F45A2882} = {3630BD6E-A8B0-4FE9-9027-E09666CFF9EA}
- {D04E3334-8652-492C-BD21-5D294D6246D9} = {3630BD6E-A8B0-4FE9-9027-E09666CFF9EA}
- {708BB5A4-9239-47D8-B73A-D124E994630B} = {3630BD6E-A8B0-4FE9-9027-E09666CFF9EA}
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {DA2C5D3D-5F61-4EA3-9399-FDEF43184299}
- EndGlobalSection
-EndGlobal
diff --git a/SMLHelper/Initializer.cs b/SMLHelper/Initializer.cs
deleted file mode 100644
index 17adc7ef7..000000000
--- a/SMLHelper/Initializer.cs
+++ /dev/null
@@ -1,60 +0,0 @@
-namespace SMLHelper;
-
-using System;
-using BepInEx;
-using HarmonyLib;
-using Patchers;
-using Utility;
-using UnityEngine;
-
-
-///
-/// WARNING: This class is for use only by Bepinex.
-///
-[BepInPlugin(PluginInfo.PLUGIN_GUID, PluginInfo.PLUGIN_NAME, PluginInfo.PLUGIN_VERSION)]
-public class Initializer : BaseUnityPlugin
-{
- internal static readonly Harmony harmony = new(PluginInfo.PLUGIN_GUID);
-
- ///
- /// WARNING: This method is for use only by Bepinex.
- ///
- [Obsolete("This method is for use only by Bepinex.", true)]
- Initializer()
- {
- GameObject obj = UWE.Utils.GetEntityRoot(this.gameObject) ?? this.gameObject;
- obj.EnsureComponent();
-
- InternalLogger.Initialize(Logger);
-#if SUBNAUTICA
- InternalLogger.Info($"Loading v{PluginInfo.PLUGIN_VERSION} for Subnautica");
-#elif BELOWZERO
- InternalLogger.Info($"Loading v{PluginInfo.PLUGIN_VERSION} for BelowZero");
-#endif
-
- PrefabDatabasePatcher.PrePatch(harmony);
- EnumPatcher.Patch(harmony);
- CraftDataPatcher.Patch(harmony);
- CraftTreePatcher.Patch(harmony);
- ConsoleCommandsPatcher.Patch(harmony);
- LanguagePatcher.Patch(harmony);
- PrefabDatabasePatcher.PostPatch(harmony);
- SpritePatcher.Patch(harmony);
- KnownTechPatcher.Patch(harmony);
- OptionsPanelPatcher.Patch(harmony);
- ItemsContainerPatcher.Patch(harmony);
- PDALogPatcher.Patch(harmony);
- PDAPatcher.Patch(harmony);
- PDAEncyclopediaPatcher.Patch(harmony);
- ItemActionPatcher.Patch(harmony);
- LootDistributionPatcher.Patch(harmony);
- WorldEntityDatabasePatcher.Patch(harmony);
- LargeWorldStreamerPatcher.Patch(harmony);
- SaveUtilsPatcher.Patch(harmony);
- TooltipPatcher.Patch(harmony);
- SurvivalPatcher.Patch(harmony);
- CustomSoundPatcher.Patch(harmony);
- EatablePatcher.Patch(harmony);
- MaterialUtils.Patch();
- }
-}
\ No newline at end of file
diff --git a/SMLHelper/ThunderstoreMetadata/BZ.EXP/README.md b/SMLHelper/ThunderstoreMetadata/BZ.EXP/README.md
deleted file mode 100644
index 96b7eba8b..000000000
--- a/SMLHelper/ThunderstoreMetadata/BZ.EXP/README.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# SMLHelper Experimental
-SMLHelper is a modding library that helps making mods easier by helping with adding new items, changing items, adding models, sprites, etc.
-This copy of SMLHelper is made for the Experimental Steam Branch and may break often as the Experimental branch gets updated. EXPECT BUGS!
-Check out [the wiki page](https://github.com/SubnauticaModding/SMLHelper/wiki) for details on how to use it.
-
-
diff --git a/SMLHelper/ThunderstoreMetadata/BZ.EXP/icon.png b/SMLHelper/ThunderstoreMetadata/BZ.EXP/icon.png
deleted file mode 100644
index fe992a07e91c05b0340f9e19bf43b68ce47af4ef..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 109402
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