BuildResourceRequirements Updated
Configurable build resource requirements per build category. Fork of Jammerbam's mod, updated for Valheim 1.0.Build Resource Requirements (Updated for Valheim 1.0)
This is a fork of Jammerbam's Build Resource Requirements (original Thunderstore listing), rebuilt for Valheim 1.0 (Unity 6). All credit for the mod itself goes to Jammerbam; this fork only updates it for the current game version. Source: https://github.com/eoger/BuildResourceRequirements
Build Resources Requirements is a mod that allows control over whether resources are required for specific build categories, tools, and pieces. This includes support for vanilla and modded categories, and configuration syncing. I wrote this mod because I didn't really like how the world modifier for disabling resources turned off everything, including the cultivator.
Features
- Category-Based Resource Requirements: Configure resource requirements for specific build categories (e.g., Crafting, Furniture, Misc.).
- Tool-Specific Configurations: Enable or disable resource requirements for tools such as the Cultivator and Hoe.
- Piece Exceptions: Specify individual pieces that should never require resources, regardless of their category.
- Modded Category Support: Automatically detects and configures newly added modded categories.
- Skill Based Resource Requirements: Configurable option to reduce resource requirements depending on the players crafting skill level.
- Multiplayer Synchronization: Ensures all players share the same configuration when connected to a multiplayer server.
Requirements
- Valheim 1.0.x (Unity 6). Older game versions (0.22x and earlier) need mod version 1.1.0.
- BepInExPack_Valheim 5.4.2350 or newer (BepInEx 5.4.23.5, Unity 6 aware).
Installation
- Install BepInEx (BepInExPack_Valheim 5.4.2350+).
- Extract the
BuildResourcesMod.dllinto theBepInEx/pluginsfolder. - Launch Valheim to generate the configuration file.
Building from source
The project is an SDK-style csproj and builds with the .NET 8 SDK (no Visual Studio needed). ServerSync is pulled in as a git submodule and compiled straight into the plugin, so clone with submodules:
git clone --recurse-submodules https://github.com/eoger/BuildResourceRequirements.git
or, in an existing checkout, git submodule update --init. Then:
dotnet build -c Release -p:GamePath="C:\Program Files (x86)\Steam\steamapps\common\Valheim"
GamePath defaults to the standard Steam location. BepInExCore defaults to <GamePath>\BepInEx\core
and can be overridden the same way. The output is a single bin/Release/BuildResourcesMod.dll.
Configuration
The configuration file is generated in BepInEx/config/Jammerbam.buildresourcesmod.cfg.
Categories
These are the available categories and their defaults:
[Categories]
MiscRequiresResources = true
CraftingRequiresResources = true
FurnitureRequiresResources = false
BuildingWorkbenchRequiresResources = false (Build)
BuildingStonecutterRequiresResources = false (Heavy Building)
DeepNorthRequiresResources = false (new in Valheim 1.0: the 67-degree steep roof/wall pieces)
CultivatorRequiresResources = true
HoeRequiresResources = true
Exceptions
Individual pieces can be added to the exceptions list:
[Exceptions]
## Comma-separated list of pieces that are always buildable.
# Setting type: String
# Default value:
PieceExceptions = darkwood_wolf,darkwood_raven,wood_dragon1
Add piece names as a comma-separated list. Exceptions override category-based settings and never require resources.
Skill Based Resource Reduction
The mod has an option to enable a feature to reduce resource requirements depending on the players crafting sill level.
This works as a percentage, so if the player has a crafting skill of 50, the required resources will be 50% less.
There is also another option to completly disable resource requirements if the player has a crafting skill of 100. If this option is disabled, all pieces will require at least 1 of each required item.
Modded Categories
The mod will detect modded categories and add them to the config file. These categories are usually added when you load a world. If you want to configure a modded category, load a world, then close the game.
Currently, the way that modded categories are displayed in the config file is by a numerical value, which is assigned when it is loaded in the game.
## Require resources for modded category: <label from the piece table>
# Setting type: Boolean
# Default value: true
9RequiresResources = true
If you need to find the category, enable the debugging option, and select a piece from the category. In the log it should show something like this:
[Info : Unity Log] [BuildResourcesMod] Piece 'Armory_TW' in category '9' requires resources: True
You can also use this same method to find the name of a piece to add it to exceptions.
Disclaimer
This is my very first mod, and my first time coding in C#. There are things that will inevitably be broken as I haven't been able to test for all scenarios. Please report if anything goes wrong so I can fix it.
Changelog
1.2.1
- Resource-consumption and requirement hooks now run at the highest Harmony priority. Fixes free pieces still being charged (including from nearby chests) when AzuCraftyBoxes is installed.
1.2.0
- Updated for Valheim 1.0 (Unity 6). Rebuilt against the 1.0.7 game assemblies and BepInExPack_Valheim 5.4.2350.
- Bundled ServerSync rebuilt for 1.0 (the old build crashed on load with a
MissingFieldException). - Added the new DeepNorth build category to the config. Despite the name it contains the new 67-degree steep roof, wall and beam pieces, so it defaults to free like the other building tabs.
- Modded category config descriptions now use the category label from the piece table instead of an unlocalized
$category_Ntoken. - Fixed a null reference when a piece could not be resolved while checking requirements.
- Config version requirement raised to 1.2.0 so 1.1.0 clients are rejected by 1.2.0 servers (they would not work on Valheim 1.0 anyway).
Planned Changes
- Fix the naming scheme in the config to make it more user-friendly.
- Continue updating and support for game updates.
Credits
Almost all of the code was written by me however the config syncing is powered by: https://github.com/blaxxun-boop/ServerSync
