File information
Last updated
Original upload
Created by
Subnautica Modding CommunityUploaded by
LeeTwentyThreeVirus scan
Safe to use
Current section
About this mod
A library that helps you add items, sprites, crafting logic, etc into the game the easy way!
Spend less time figuring out how to get your mod to work and more time on what you can do with it!
- Requirements
-
Nexus requirements
Mod name Notes BepInEx Subnautica Pack Mods requiring this file
- Permissions and credits
-
Credits and distribution permission
- Other user's assets All the assets in this file belong to the author, or are from free-to-use modder's resources
- Upload permission You are not allowed to upload this file to other sites under any circumstances
- Modification permission You must get permission from me before you are allowed to modify my files to improve it
- Conversion permission You are not allowed to convert this file to work on other games under any circumstances
- Asset use permission You must get permission from me before you are allowed to use any of the assets in this file
- Asset use permission in mods/files that are being sold You are not allowed to use assets from this file in any mods/files that are being sold, for money, on Steam Workshop or other platforms
- Asset use permission in mods/files that earn donation points You are not allowed to earn Donation Points for your mods if they use my assets
Author notes
This author has not provided any additional notes regarding file permissions
File credits
Full list of contributors to this project can be found on https://github.com/QModManager/SMLHelper/graphs/contributors
Donation Points system
Please log in to find out whether this mod is receiving Donation Points
-
Translations
- Russian
- Mandarin
- Changelogs
-
-
Version 2.14.1
- Fixed SMLHelper not being able to automatically identify the default path of mod assets
-
Version 2.14.0
- Fixed caching issues
- CustomSoundPatcher Performance Improvements & Bug Fixes
- Remove extra EventHandler for options menu
- Allow mod options to add Language IDs instead of string literals
- Added EatableHandler to modify existing eatable items
-
Version 2.12.1
- Fixed Coordinated Spawns save failing sometimes
- Fixed custom TechCategories showing the wrong name under the blueprints tab
-
Version 2.12
- Hotfix for global Coordinated Spawns
- Added AudioClip support for the CustomSoundsHandler
- Quit/Save events now get called in the appropriate functions.
- for more information, please visit the GitHub: https://github.com/SubnauticaModding/SMLHelper/pull/241
-
Version 2.11.1
- This is a hotfix release. For full details, please see the release on GitHub: https://github.com/SubnauticaModding/SMLHelper/releases/tag/v2.11.1
- Hotfix: Resolved an issue introduced in SMLHelper 2.11, which caused toggle events to no longer be invoked appropriately due to a missing case in the event router.
-
Version 2.11
- This is a backwards-compatible feature release. For full details, please see the release on GitHub: https://github.com/SubnauticaModding/SMLHelper/releases/tag/v2.11
- New feature: Added JsonFile, a basic abstract implementation of the IJsonFile interface for mod authors to extend when wanting to work with simple JSON data. See the PR for more details: https://github.com/SubnauticaModding/SMLHelper/pull/233
- New feature: Added SaveDataCache, an abstract extension of JsonFile which is intended for use by mod authors to extend in a similar manner as ConfigFile, but for per-saveslot data. See the PR for more details: https://github.com/SubnauticaModding/SMLHelper/pull/233
- New feature: Added methods to the InGameMenuHandler for registering a callback to be invoked whenever the game loads a saveslot. See the PR for more details: https://github.com/SubnauticaModding/SMLHelper/pull/233
- Enhancement: ConfigFile now supports Vector3 and Quaternion.
- Bugfix: Resolved an issue where passing custom string names for enum-based Choice was incorrectly displaying the choice as if the first option was selected when the menu is first built, regardless of what option is actually selected.
- Bugfix: Resolved an issue where backing out to the main menu and loading into the game again would result in CoordinatedSpawnsInitialized.smlhelper not being correctly saved when the player saves the game.
- Maintenance: Invocation of ConfigFile attribute-based events are now deferred until the OptionsPanelHandler has finished registering the ConfigFile to the options menu to ensure consistency across all ConfigFile events.
- Maintenance: Example Mod project updated to include examples of how to use the SaveDataCache and SaveDataHandler features.
-
Version 2.10.1
- This is a backwards-compatible hotfix release.
- Hotfix: Identified and resolved bugs in the CoordinatedSpawnsHandler implementation. If you were previously consuming the SpawnInfo API, pay close attention to this PR: https://github.com/SubnauticaModding/SMLHelper/pull/229
-
Version 2.10
- This is a backwards-compatible feature release. For full details, see the GitHub release: https://github.com/SubnauticaModding/SMLHelper/releases/tag/v2.10
- New feature: Sound Handler Initial implementation. https://github.com/SubnauticaModding/SMLHelper/pull/220
- Enhancement: Add optional Rotation to Coordinated spawns when using the assets system. https://github.com/SubnauticaModding/SMLHelper/pull/221
- Enhancement: ModPrefab's ProcessPrefab method is now marked protected virtual rather than private. This is intended for the purpose of advanced modders to be able to customise how the prefab is processed via overriding. https://github.com/SubnauticaModding/SMLHelper/pull/225
- Maintenance: Updated to using C# 9.0 and some of its features. https://github.com/SubnauticaModding/SMLHelper/pull/222
- Maintenance: To accommodate #225, CustomFabricator.ProcessPrefab is now renamed CustomFabricator.PreProcessPrefab. https://github.com/SubnauticaModding/SMLHelper/pull/227
- Bugfix: Fixed a bug where non-global coordinated spawns objects were getting despawned after save/reload. https://github.com/SubnauticaModding/SMLHelper/pull/226
-
Version 2.9.4
- Version Checker Support
- Basic Text msg system
- Fix CraftDataHandlers failing to retain data
- Added Metious's Survival Handler
- changed unlockatstart to virtual
- Bugfixes for spawning system
-
Version 2.9.2
- Fix ConfigFile List Entry Duplication
- More Dynamic Language Patching
- Semi Dynamic SpritePatcher
- Prevent unknown JSON string from BREAKING Choice options
-
Version 2.9.0.1
- Hotfix for an issue introduced in v2.9 affecting some mods using sliders
-
Version 2.9.0
- Added a new API for registering custom console commands.
- Fixed a bug if a prefab does not have a SkyApplier.
- Added method to ModPrefab, for upcoming async update for SN.
- Added a new way of creating Menu Options.
- Pda Data overwriting. Use with CAUTION!
-
Version 2.8.5
- Hotfix for a JSON parsing issue.
-
Version 2.8.4
- Hotfix for an issue where overwriting sprites that already exist in-game would crash SMLHelper
-
Version 2.8.3
- Missing Sprite Hotfix
-
Version 2.8.2
- Modded prefabs can now be fetched during patching via PrefabDatabase.TryGetPrefabFilename
- Added new ModPrefabCache for use by ModPrefab
- Fixer component is now obsolete
- Updates to .net 4.7.2 for compatibility with upcoming .NET Standard libraries
- Optimizations in mod sprite patching
-
Version 2.8
- Updated for QModManager 4.0 and HarmonyX
- For full details, visit the GitHub repo https://github.com/SubnauticaModding/SMLHelper/pull/175
- Updated ExampleMod to showcase attribute patching and the new ConfigFile system
- Updated ConfigFile system to no longer require referencing Newtonsoft JSON
- Fixed a bug that incorrectly displayed modded items as originating from Subnautica
- Inventory cache now resets when container changes size
- Fixed a bug in ConfigFile system that incorrectly serialized Float values of zero
-
Version 2.7.0
- Added volume control overloads to AudioUtils
- ButtonModOptions allows for clickable buttons withing the Mod Options menu
- Now saves and restores the last known scroll position in the Mod Options menu
- Added PingHandler for registering new PingTypes with an associated Sprite
- For full details, visit the GitHub repo https://github.com/SubnauticaModding/SMLHelper/pull/158
-
Version 2.6.4
- TechGroup/Catagory changed to Virtual to be Optional in PDAItem.
- Group/Catagory Validation before patching.
- QuickSlotType patching added to Equipable with default value of none.
- Warning for Patching QuickSlotType that it must be done after setTechData.
- Enhancements to Spawnable and PDAItem enabling easier spawning and scanner entry creation.
-
Version 2.6.3
- Bug Fixes for BelowZero
-
Version 2.6.2
- Added simple KeyCode utility methods #140
- Code Refactoring for less duplication #139
- Json Configuration Utility #142
- Options Menu fix for FrostBite BZ Update #146
- Custom Eating sounds #144
- Add Craft speed modifier to #143
- Null check on removing craft nodes for softfail.
-
Version 2.6.1
- Fixed a Null Ref Exception in new GetTechData.
- ModdedTechTypeExists and TryGetModdedTechType no longer return true for deactivated TechTypes
- Optional format parameter for LoadSpriteFromFile now handled
- For full details, visit the GitHub repo https://github.com/SubnauticaModding/SMLHelper/pull/138
-
Version 2.6.0
- Mod Option system refactoring and new option types
- New AudioUtility to import and play .wav files ingame
- Cache Save/Load Overhaul - Altered data patching to allow for ingame changes to recipes and more
- New onQuit Event handler to register events to trigger when someone quits via in game menu
- New optional features in ModCraftTreeRoot and Customfabricator allow for total control of the craft tree at run time
- For full details, visit the GitHub repo https://github.com/SubnauticaModding/SMLHelper/pull/135
-
Version 2.5.3
- Added the ability to display mod and debug item information on item tooltips (#122)
- Added Obsolete tags to Initializer class and methods to prevent improper usage in other mods (#123)
- Added the Equipable class (#125)
- Added safety checks to LanguagePatcher (#121)
-
Version 2.5.2
- Updates the new CustomFabricator class to derive from the Buildable class
- For full details, visit the GitHub repo https://github.com/SubnauticaModding/SMLHelper/pull/119
-
Version 2.5.1
- Moves main patching into PostPatch time - This is a new feature from QModManager 3.0
- For full details, visit the GitHub repo https://github.com/SubnauticaModding/SMLHelper/pull/117
-
Version 2.5.0
- For full details, visit the GitHub repo https://github.com/SubnauticaModding/SMLHelper/pull/115
- New handler added LootDistributionHandler
- New handler added PDAEncyclopediaHandler
- New handler added WorldEntityDatabaseHandler
- New methods added to PDAHandler
- Removed redundant/deprecated ResourcePatcher
- Fixed a bug introduced in the previous release that caused modded items to no longer spawn via console commands
-
Version 2.4.2
- Hotfix - Restored method that was accidentally removed from CraftDataHandler
-
Version 2.4.1
- For full details, visit the GitHub repo https://github.com/QModManager/SMLHelper/pull/105
- Ready for the Unity2019 update
- Now building on .NET Framework 4.0
- Previously known but inactive TechType or CraftTree values will be saved to a separate file so they can be recovered later
-
Version 2.3.0
- Legacy APIs have been fully deprecated - Please update your mods to V2 APIs
- Ready for Subnautica's Little Big Update - Updated for Unity2018
-
Version 2.3
- New ItemStorageHelper and StorageHelperExtensions added which provide useful tools for mods working with storage containers
- The CustomFish Framework is now integrated into SMLHelper
- New custom ItemActions can be added, which allow on-use effects to be triggered from inventory items
- PrefabUtils expanded with GetOrAddComponent method
- MAJOR UPDATE - All handler methods can now be accessed via an interface that allows for loose coupling and depencendy injection
- Improvements made to detect external mod names for logs
- SMLHelper features should no longer dependent on its folder name
- BUG FIX - Language Override Files now correctly handle entries with line breaks
- BUG FIX - Multiple calls into KnownTechHandler.AddAnalysisTech will update correctly instead of overwriting each other
- Cloned prefabs of Buildables now properly disposed of, freeing up resources
- BUG FIX - Multiple calls into SetTechData will now see the later entry overwriting the earlier entry, instead of discarding both
-
Version 2.2.1
- Fixed bug with logging levels
- Performance updates
-
Version 2.2.0
- New log levels greatly reduce the number of non-debugging logs. User configurable for developers.
- Greatly improved duplicate checks to better catch conflicts between mods.
- Upgraded to newer version of Harmony as required by QModManager 2.0
-
Version 2.1.1
- PatchUtils no longer public
- Visual Studio documentation added where missing
- Additional methods added to LanguageHandler: SetTechTypeName and SetTechTypeTooltip
- Performance enhancement for all ItemContainers in the game
- New Player Feature: Language Overrides for player created translations and in-game text customization
- Several enhancements to Mod Options. Also includes new Keybind config option
- Mods Options in menu now appear sorted in alphabetical order
- New PdaHandler: Edits fragment scan times and totals
- New GetModdedTechData method in TechTypeHandler can retrieve modded blueprint data before its patched in
- Added duplicate safety checks to legacy TechData patching.
-
Version 2.0.4
- Modded items added to the prefab database are re-applied between save loads
- Additional error handling and logging for common CraftData errors
- Minor fixes to the Asset classes to help first-time modders using SMLHelper
-
Version 2.0.3
- Added a new Inventory cache feature that fixes the heavy performance impact due to the game re-calculating inventory space while the player's hand hovers over a Pickupable object
-
Version 2.0.2
- Patch methods using linear searches at runtime now use Dictionary based searches instead
- Modded sprites and TechData recipes add new entries directly into the game's original data structures
- Extra error handling and logging for cache file read/write operations
- New classes to speed up development and learning for first-time modders using SMLHelper
- New CraftDataHandler.AddToGroup method allows you to insert your PDA entry after an existing one for better sorting
-
Version 2.0.1
- Fixed new items always being treated as "new" in fabricators and builder menus
- Removed TestOptions from Mods menu in the Options panel (in game)
- Internal code and API changes
-
Version 2.0
- First major version update of SMLHelper
- Includes a fully overhauled API
- Adds several new features and bug fixes
-
Version 1.7
- Added feature to use modded TechTypes into CustomCraftNode
- Added TechType banlist to avoid conflicts with RandyKnapp's mods
- Added TechType cache failsafe
- Added better exception messages
-
Version 1.6
- Added abilities to create and manage new CraftTrees so that you can make your own crafters
- Fixed bug where instantiated objects appear at world origin (0, 0, 0)
-
Version 1.5.2
- Added feature to remove existing TechType recipes from crafters
-
Version 1.5.1
- Added TechType caching: you are now able to conveniently remove mods without messing up your saves!
-
Version 1.5
- Reworked custom craftables
- Added feature to make custom tabs in fabricators
-
Version 1.4.1
- Fixed a bug that hid other TechTypes in the Builder menu
-
Version 1.4
- Fixed CraftDataPatcher
- Added support for using inbuilt sprites
-
Version 1.3
- Added KnownTechPatcher
- Added support for using inbuilt assets
-
Version 1.2
- More support for buildables
-
Version 1.1
- Added some support for buildables
-
Version 1.0
- Initial Release
-
SMLHelper has been deprecated and will no longer receive updates.
Use Nautilus if making mods for Subnautica 2.0
While there is currently version 2.15.0.1 for Subnautica 2.0, it will be Removed when Nautilus is released fully as they WILL NOT work together.
A library that helps you add items, models, sprites, etc into the game in a very easy way!
Before asking any questions, please read the FAQ!
Also, DO NOT try to change the files in the Bepinex/Config/Modding Helper folder, especially the folders that contain the word "Cache". They are very crucial in determining how SMLHelper will add items into the game, and it is REQUIRED that they are not touched, especially if you don't know what you're doing!
Installation (FOR LATEST VERSION)
1. Download and install the Bepinex Subnautica Pack
2. Download the latest version of SMLHelper (Living large update).
3. Open up the downloaded file (you can also use WinRar or 7zip to open it).
4. Either drag-and-drop or copy-and-paste the "plugins" folder in the zip into your Bepinex folder.
Installation (FOR LEGACY BRANCH ONLY)
1. Download and install the QModManager if you have not already done so.
2. Download the legacy branch version of SMLHelper.
3. Open up the downloaded file (you can also use WinRaR or 7Zip to open it).
4. Either drag-and-drop or copy-and-paste the contained "Modding Helper" folder into your QMods folder.
If your QMods folder doesn't exist, run the game once so that QModManager generates it. You can also make the folder yourself.
FAQ
What is this?
This library is basically allows you to easily communicate with the game so that you can focus more on the mod's features you are developing. It does nothing on its own, but is rather a "tool" to help other mods.
Isn't there already a Modding Helper?
Yes, but the difference is that this is a brand-new version of Modding Helper; V2, is what we're calling it. The reason for that is because we've done a major revamp of how the library works, and how other mods can use it. It also fixes a bunch of bugs, adds lots of new features, and overall, its just a huge improvement.
Is it compatible with mods that use the old Modding Helper?
Not anymore. As of version 2.3, all of the legacy APIs have since been removed.
We chose this time to do it since the "Little Big Update" had all mods requiring updates anyways.
How do I update to a new version?
Do not delete your old folder! Just replace the files in the original Modding Helper folder with the ones from the new archive.
It's the same as updating to a new version.
I am a modder. How do I enable debug logging?
Additional Resources
For modders and developers:
Please refer to the Wiki to get to know how to use this library!
https://github.com/SMLHelper/SMLHelper/wiki
And here's the source code:
https://github.com/SMLHelper/SMLHelper
For players:
As of the 2.1 release, there is a new Language Patcher feature in SMLHelper
You can use this to provide your own custom translations or alternate text for any SMLHelper enabled mod.
Learn how to use the Language Overrides on the wiki
Use Nautilus if making mods for Subnautica 2.0
While there is currently version 2.15.0.1 for Subnautica 2.0, it will be Removed when Nautilus is released fully as they WILL NOT work together.
A library that helps you add items, models, sprites, etc into the game in a very easy way!
Before asking any questions, please read the FAQ!
Also, DO NOT try to change the files in the Bepinex/Config/Modding Helper folder, especially the folders that contain the word "Cache". They are very crucial in determining how SMLHelper will add items into the game, and it is REQUIRED that they are not touched, especially if you don't know what you're doing!
Installation (FOR LATEST VERSION)
1. Download and install the Bepinex Subnautica Pack
2. Download the latest version of SMLHelper (Living large update).
3. Open up the downloaded file (you can also use WinRar or 7zip to open it).
4. Either drag-and-drop or copy-and-paste the "plugins" folder in the zip into your Bepinex folder.
Installation (FOR LEGACY BRANCH ONLY)
1. Download and install the QModManager if you have not already done so.
2. Download the legacy branch version of SMLHelper.
3. Open up the downloaded file (you can also use WinRaR or 7Zip to open it).
4. Either drag-and-drop or copy-and-paste the contained "Modding Helper" folder into your QMods folder.
If your QMods folder doesn't exist, run the game once so that QModManager generates it. You can also make the folder yourself.
FAQ
What is this?
This library is basically allows you to easily communicate with the game so that you can focus more on the mod's features you are developing. It does nothing on its own, but is rather a "tool" to help other mods.
Isn't there already a Modding Helper?
Yes, but the difference is that this is a brand-new version of Modding Helper; V2, is what we're calling it. The reason for that is because we've done a major revamp of how the library works, and how other mods can use it. It also fixes a bunch of bugs, adds lots of new features, and overall, its just a huge improvement.
Is it compatible with mods that use the old Modding Helper?
Not anymore. As of version 2.3, all of the legacy APIs have since been removed.
We chose this time to do it since the "Little Big Update" had all mods requiring updates anyways.
How do I update to a new version?
Do not delete your old folder! Just replace the files in the original Modding Helper folder with the ones from the new archive.
It's the same as updating to a new version.
I am a modder. How do I enable debug logging?
- Debug logging (for development and troubleshooting) can be enabled by changing the value in the new file
EnableDebugLogs.txt
. - Debug logging can also be toggled from the in-game Mods menu, however, since most of the SMLHelper actions (and thus logs) take place
before the main menu loads, this will mostly only be useful for subsequent loads of the game.
Additional Resources
For modders and developers:
Please refer to the Wiki to get to know how to use this library!
https://github.com/SMLHelper/SMLHelper/wiki
And here's the source code:
https://github.com/SMLHelper/SMLHelper
For players:
As of the 2.1 release, there is a new Language Patcher feature in SMLHelper
You can use this to provide your own custom translations or alternate text for any SMLHelper enabled mod.
Learn how to use the Language Overrides on the wiki