From 766c3f76080956ae142ae5c5b5c2499c54d2372d Mon Sep 17 00:00:00 2001 From: mikx Date: Wed, 28 Jan 2026 20:05:17 -0500 Subject: [PATCH] (1.3.0) Added ServerSync compatibility --- MxValheim/MxValheim.cs | 45 ++++++++++++++++++++++-------- MxValheim/MxValheim.csproj | 7 +++-- MxValheim/Patch/Bow.cs | 2 +- MxValheim/Patch/CraftingStation.cs | 2 +- MxValheim/Patch/Ores.cs | 2 +- MxValheim/Patch/WearNTear.cs | 2 +- README.md | 1 + 7 files changed, 44 insertions(+), 17 deletions(-) diff --git a/MxValheim/MxValheim.cs b/MxValheim/MxValheim.cs index 401de05..922e1ef 100644 --- a/MxValheim/MxValheim.cs +++ b/MxValheim/MxValheim.cs @@ -1,6 +1,7 @@ using BepInEx; using BepInEx.Configuration; using HarmonyLib; +using ServerSync; using System.Collections.Generic; using UnityEngine; @@ -9,24 +10,46 @@ public class MxValheimMod : BaseUnityPlugin { private const string ModGUID = "ovh.mxdev.mxvalheim"; private const string ModName = "MxValheim"; - private const string ModVersion = "1.2.0"; + private const string ModVersion = "1.3.0"; - public static ConfigEntry OreMultiplier; - public static ConfigEntry rangeMultiplier; - public static ConfigEntry bowDrawSpeedBonusPerLevel; - public static ConfigEntry rainDamage; + private static readonly ConfigSync configSync = new ConfigSync(ModGUID) + { + DisplayName = ModName, + CurrentVersion = ModVersion, + MinimumRequiredVersion = ModVersion + }; - // Set your multiplier here - public static int Multiplier = 3; + public static ConfigEntry Config_Locked; + public static ConfigEntry Config_OreMultiplier; + public static ConfigEntry Config_rangeMultiplier; + public static ConfigEntry Config_bowDrawSpeedBonusPerLevel; + public static ConfigEntry Config_rainDamage; + public static ConfigEntry Config_boatSpeed; void Awake() { - OreMultiplier = Config.Bind("General","OreMultiplier",3,"How many items should drop for every 1 ore/scrap found."); - rangeMultiplier = Config.Bind("General", "CraftingRangeMultiplier",2.0f,"Multiplier for the workbench build/crafting range. Default is 2x."); - bowDrawSpeedBonusPerLevel = Config.Bind("General", "BowDrawSpeedBonusPercentPerLevel", 0.20f, "Shorten the bow draw speed by this percent for every bow upgrade level."); - rainDamage = Config.Bind("General", "RainDamage", true, "Set to true to stop rain damage, false to return to vanilla behavior."); + Config_Locked = BindSyncConfig("General", "Lock Configuration", true, "If obsession is on, only admins can change settings."); + configSync.AddLockingConfigEntry(Config_Locked); + Config_OreMultiplier = BindSyncConfig("General","OreMultiplier",3,"How many items should drop for every 1 ore/scrap found."); + Config_rangeMultiplier = BindSyncConfig("General", "CraftingRangeMultiplier",2.0f,"Multiplier for the workbench build/crafting range. Default is 2x."); + Config_bowDrawSpeedBonusPerLevel = BindSyncConfig("General", "BowDrawSpeedBonusPercentPerLevel", 1.0f, "Shorten the bow draw speed by this percent for every bow upgrade level."); + Config_rainDamage = BindSyncConfig("General", "RainDamage", true, "Set to true to stop rain damage, false to return to vanilla behavior."); + Config_boatSpeed = BindSyncConfig("General", "BoatSpeedMultiplier", 2.0f, "Your boat/raft will move without wind at a speed multiplied by this value."); Harmony harmony = new Harmony(ModGUID); harmony.PatchAll(); } + + /// + /// Helper method to bind a config and register it for server syncing. + /// + private ConfigEntry BindSyncConfig(string group, string name, T value, string description, bool synchronizedSetting = true) + { + ConfigEntry configEntry = this.Config.Bind(group, name, value, description); + + SyncedConfigEntry syncedConfigEntry = configSync.AddConfigEntry(configEntry); + syncedConfigEntry.SynchronizedConfig = synchronizedSetting; + + return configEntry; + } } \ No newline at end of file diff --git a/MxValheim/MxValheim.csproj b/MxValheim/MxValheim.csproj index 760ed94..3022547 100644 --- a/MxValheim/MxValheim.csproj +++ b/MxValheim/MxValheim.csproj @@ -37,12 +37,15 @@ E:\SteamLibrary\steamapps\common\Valheim\Valheim_Data\Managed\Assembly-CSharp-publicized.dll - - E:\SteamLibrary\steamapps\common\Valheim\Valheim_Data\Managed\assembly_valheim.dll + + E:\SteamLibrary\steamapps\common\Valheim\Valheim_Data\Managed\assembly_valheim-publicized.dll E:\SteamLibrary\steamapps\common\Valheim\BepInEx\core\BepInEx.dll + + C:\Users\blood\Downloads\ServerSync.dll + diff --git a/MxValheim/Patch/Bow.cs b/MxValheim/Patch/Bow.cs index c623662..e5ec32b 100644 --- a/MxValheim/Patch/Bow.cs +++ b/MxValheim/Patch/Bow.cs @@ -17,7 +17,7 @@ namespace MxValheim.Patch if (___m_attackDrawTime >= 0f && ___m_attackHold) { int quality = weapon.m_quality; - ___m_attackDrawTime += UnityEngine.Time.fixedDeltaTime * (MxValheimMod.bowDrawSpeedBonusPerLevel.Value*quality); + ___m_attackDrawTime += UnityEngine.Time.fixedDeltaTime * (MxValheimMod.Config_bowDrawSpeedBonusPerLevel.Value*quality); } } } diff --git a/MxValheim/Patch/CraftingStation.cs b/MxValheim/Patch/CraftingStation.cs index 79f4442..56ac155 100644 --- a/MxValheim/Patch/CraftingStation.cs +++ b/MxValheim/Patch/CraftingStation.cs @@ -17,7 +17,7 @@ namespace MxValheim.Patch if (rangeField.FieldExists()) { float currentRange = rangeField.GetValue(); - rangeField.SetValue(currentRange * MxValheimMod.rangeMultiplier.Value); + rangeField.SetValue(currentRange * MxValheimMod.Config_rangeMultiplier.Value); } } } diff --git a/MxValheim/Patch/Ores.cs b/MxValheim/Patch/Ores.cs index 6186c25..b27ac2d 100644 --- a/MxValheim/Patch/Ores.cs +++ b/MxValheim/Patch/Ores.cs @@ -14,7 +14,7 @@ namespace MxValheim.Patch { if (__result == null || __result.Count == 0) return; - int countToAdd = MxValheimMod.OreMultiplier.Value - 1; + int countToAdd = MxValheimMod.Config_OreMultiplier.Value - 1; if (countToAdd <= 0) return; List extraDrops = new List(); diff --git a/MxValheim/Patch/WearNTear.cs b/MxValheim/Patch/WearNTear.cs index 7ca93ab..8065b29 100644 --- a/MxValheim/Patch/WearNTear.cs +++ b/MxValheim/Patch/WearNTear.cs @@ -10,7 +10,7 @@ namespace MxValheim.Patch { static void Postfix(WearNTear __instance, ref bool __result) { - if (!MxValheimMod.rainDamage.Value) return; + if (!MxValheimMod.Config_rainDamage.Value) return; __result = true; } diff --git a/README.md b/README.md index d262e53..2c4ae3c 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ Official Mx Valheim Mod. ## Features +- **NEW** Now using SaveSync when used on a server. - Ore drop multiplier. (Value available in the generated config.) - Workbench crafting range multiplier. (Value available in the generated config.) - Reduce Bow draw time for each upgrade level. (Value available in the generated config.)