Jötunn (/ˈjɔːtʊn/, 'giant'), the Valheim Library was created with the goal of making the lives of mod developers easier. It enables you to create mods for Valheim using an abstracted API so you can focus on the actual content creation.
Changed "open log file" button to "open log folder" in the compatibility window
Fixed an edge case where PrefabManager.Cache preferred the prefab for ObjectDB parent instead of the scene object
Fixed an error when an independent mod adds a prefab twice to ObjectDB. A warning will be logged with the prefab name and hash to help debugging, but vanilla or other mods may still have issues with the double prefab
Fixed an error when available pieces in the build hammer where not initialised properly
Fixed an error that could occur when a build tab is localised
Fixed dynamic build tab width was not working for localised tabs
Version 2.10.0
Deprecated "ChanceToSpawn" in LocationConfig and made it compatible with version 0.212.6
Added Remove and Destroy methods to the ZoneManager
Added method to inject a ZoneLocation at runtime to the ZoneManager
Added missing GetClutter without mod guid to ModQuery and cleanup code
Added catching of patch errors with the ModQuery to log a clean error on the console and avoid unrelated errors
Added AddInitialSynchronization to SynchronizationManager, this allows sending arbitrary data to the connecting client and making sure it will be received before the client's connection is fully established
Added registration of custom ConfigFiles to SynchronizationManager
Fixed RenderManager inconsistency between a headless server and normal client. Instead of always returning null, an empty sprite is returned on headless when it should have been rendered
Fixed trying to insert Jötunn's localisation multiple times
Version 2.9.0
Big compatibility window improvements: internal cleanup, better use of available space, button to open the log file, improved language and added german localization
Changed that mocked shaders will not be resolved on a headless server because they are not available. This stops unnecessary warnings from being printed
Fixed crossplay connection issues properly and removed the hotfix from Jotunn 2.8.1
Fixed admin check was false instead of true in some special cases
Version 2.8.1
Implemented hotfix for PlayFab connection issues (disables vanilla compression again, but works for now at least)
Version 2.8.0
Compatible with patch version 0.211.11
Fixed connection issues in Steam multiplayer with the latest Valheim patch. Crossplay (XBox multiplayer) is not working yet due to bigger changes, we are working on solving this issue
Marked PatchInit attribute as obsolete
Version 2.7.9
Added ZoneManager.OnVanillaClutterAvailable event
Added CustomClutter to ModRegistry
Fixed mocked material textures/shaders where not directly fixed after they were injected. Properties that are not available at this time are still delayed
Fixed connection issues with the upcoming cross play update
Fixed admin checks for the upcoming cross play update
Reworked mock system to improve world loading time, up to 5x faster than the old system
Added support for shaders and materials to the mock system
Version 2.7.2
Fixed possible NRE in SyncManager
Opened up some previously internal interfaces for mods to use (e.g. BepInExUtils)
Version 2.7.1
Fixed Bep ConfigManager hooking for config sync not working sometimes
Slight improvements of startup time
Version 2.7.0
Removed mod settings as they have caused problems and are a redundant feature. The BepInEx ConfigurationManager can be used instead
Version 2.6.12
Fixed JotunnBuildTask. This has no effect on the actual game but fixes the NuGet package upload, meaning the mod version and NuGet version match again
Version 2.6.11
Compatible with patch version 0.209.8
Fixed ModQuery has not cleared old prefabs, resulting in null instances
Version 2.6.10
Fixed mod settings could bypass ServerSync settings
Fixed mod settings slider could bypass readonly settings
Version 2.6.9
Fixed error of ModQuery if no ObjectDB/ZNetScene is available.
Version 2.6.8
Changed mod settings to display all mods, not just Jötunn ones
Added config option to disable the mod settings completely
Added helper methods for CustomConfigs
Fixed the PrefabManager Cache chose a child GameObject in rare cases, even if a better prefab with the same name existed
Fixed cache path of rendered icons could contain illegal characters
Fixed NRE of icon rendering if the prefab has null bones
Fixed language loading if an empty language was saved
Fixed tabs were rebuilt every time in RemovePieceCategory, even if categories have not changed
Fixed NRE of ModQuery and slightly improved performance
Fixed vanilla items could be detected as modded ones in ModQuery if the mod calls UpdateItemHashes in a prefix before vanilla
Improved performance of adding and retrieving custom pieces
Version 2.6.7
Added display of the Valheim version string to the compatibility window. If a mismatch is produced by a mod, it will be displayed accordingly
Added the ModQuery class which allows to get metadata about content of loaded mods, including non-Jötunn ones. It is disabled by default to not create unnecessary loading time when not used
Added hammer tab UI settings to the public API
Version 2.6.6
Added automatic refresh of vanilla locations after OnVanillaLocationsAvailable to prevent ZNetView problems
Added GetPieceCategory to the PieceManager for runtime translation of custom piece table categories to their int values
Fixed NRE error message when client has disconnected before initial data sending
Version 2.6.5
Added RemovePieceCategory to the PieceManager to remove a category from a piece table again (works at runtime)
Added GetPieceTables to the PieceManager to get a list of all piece tables in the game
Added dynamic tab width calculation for custom piece categories
Fixed pieces with PieceCategory.All were not displayed in custom tabs
Version 2.6.4
Fixed a CustomLocation was not prepared correctly if a deactivated prefab was passed, causing it to spawn inside itself when proximity loaded again
Fixed vanilla piece categories could be hidden when a mod used the long piece table name
Version 2.6.3
Fixed connection error on first connection attempt with QuickConnect
Fixed the compatibility window was not showing up, if the server has no password
Fixed a client could sometimes connect to a server, even if mods are incompatible
Version 2.6.2
Fixed custom category display using Auga (and probably other UI mods)
Fixed Mod Settings FPS drop
Version 2.6.1
Removed the MMHOOK dependency from Jötunn. Mods using MMHOOK themself should list the HookGenPatcher as a dependency directly.
Jötunn's PrebuildTask does not generate MMHOOK dlls any more, publicized dlls can still be generated automatically.
ModStub can have a different deploy path than the Valheim directory (deploying to a r2modman profile for example)
Version 2.4.4
Fixed in-game menu not reacting on Esc after closing mod settings
Fixed a NRE condition on the mod settings
Version 2.4.3
Fixed admin config display for non-admin users
Version 2.4.2
Reworked the mod settings menu completely using Unity, it should be much faster now and also removed some oddities from using a vanilla Settings clone before
Added support for Vector2 and generic enums in mod settings
Removed necessity for key binds backed by a config to also have a button registered in ZInput to show up in the mod settings
Added some RectTransform extensions for world positioning and overlapping
Changed the timing of GUIManager.OnCustomGUIAvailable to execute after custom Localization has been loaded to ensure GUI content is properly localized
Fixed NRE while resolving mock references for null enumerables
Fixed the naming of location containers in ZoneManager
ItemConfigs without requirements don't create a Recipe for that item
Added RenderManager.Render() which renders the given GameObject in the same frame instead of waiting for the next frame. Marked EnqueueRender obsolete.
Force unload mod's loaded asset bundles on Game.OnApplicationQuit to prevent the Unity engine from crashing
Depend on BepInExPack-5.4.1601 for the new Unity engine corlibs
Version 2.3.10
Added custom piece table category injection at runtime
Added RenderRequest for the RenderManager to define options for the render process
Fixed mock resolving of generic List types
Fixed CustomGUI anchor settings
Fixed Dropdown list sizing (thx joeyparrish)
Version 2.3.9
Added the possibility to define vanilla console command modifiers in ConsoleCommand (thx joeyparrish)
Added the possibility to define command options in ConsoleCommand
Fixed exception for mods loaded without PluginInfo.Location set
Fixed NRE on missing KeyHint objects
Version 2.3.8
Added RenderManager to render Sprites from GameObjects at runtime (thx MSchmoecker)
Added GamepadButton to the InputManager and ButtonConfig - custom inputs can now define a gamepad button corresponding to the keyboard input
Added gamepad buttons to KeyHints for custom inputs as well as vanilla key overrides
Gamepad buttons can be defined in the mod settings if they are bound to a config
Refactored custom KeyHints into their own KeyHintManager and obsoleted the API in the GUIManager
Fixed automatic mod recognition from filesystem paths (thx Digitalroot)
Fixed duplication check on ObjectDB not always working correctly
Fixed NRE in ModCompat for VersionCheckOnly mods
Fixed a strange hard crash when using GUIManager.IsHeadless()
Version 2.3.7
Fixed translation of the custom skill raise message
Added ZInput.GetButton support for custom buttons
Version 2.3.6
Added JSON helper methods to PieceConfig
Added support for BepInEx' KeyboardShortcuts in ButtonConfig and InputManager
Added slider for numerical values in the mod settings GUI (thx MSchmoecker)
Item property in ItemConfig is publicly readable now so it can be serialized
Fixed button config in mod settings for control keys
Fixed the localization for Jötunn tokens
Version 2.3.5
Added support for custom Obliterator/Incinerator item conversions
Version 2.3.4
Fixed BoneReorder for equip with disabled attach points (thx GoldenJude)
Fixed DragWindowCntrl not respecting the screen size sometimes (thx MSchmoecker)
Fixed ModCompat NRE with missing "NotEnforced" mods
Fixed double values not saving in mod settings
Added support for KeyboardShortcuts in mod settings
Version 2.3.3
Reworked the mod compatibility checks
Obsoleted and replaced some misleading named compat level
Added two new mod compat level: ServerMustHaveMod and ClientMustHaveMod
Please check your mod's compat level and change appropriately
Basic H&H compatibility. Looks like everything works but problems might still arise
Please report any problems you encounter, preferably on our Discord
Added possibility to traverse child GameObjects when resolving mocks (FixReference = true)
Mock references added via Config are resolved automatically, set FixReference = false if your actual GO does not use mocks
Check your mod's items and pieces if they really need FixReference set to true
Fundamentally refactored the Localization system - mods can and should add a CustomLocalization wrapper for all mod specific localization from now on
Localization is stored per mod, so you can create / add only one custom localization instance, which behaves like the LocalizationManager in older releases
Marked the old API obsolete, existing mods are encouraged to adapt the new system