From 90bb020a44cb1439bd02d06b4d0d562d96a66867 Mon Sep 17 00:00:00 2001 From: mikx Date: Wed, 18 Feb 2026 17:20:30 -0500 Subject: [PATCH] (1.6.5) Item Drops Settings from Json --- MxValheim/MxValheim.cs | 42 ++++++++++++++++++++++------------------- MxValheim/Patch/Ores.cs | 8 ++------ 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/MxValheim/MxValheim.cs b/MxValheim/MxValheim.cs index 3d6ce4f..6bcc89b 100644 --- a/MxValheim/MxValheim.cs +++ b/MxValheim/MxValheim.cs @@ -28,7 +28,7 @@ public class MxValheimMod : BaseUnityPlugin private const string ModGUID = "ovh.mxdev.mxvalheim"; private const string ModName = "MxValheim"; - private const string ModVersion = "1.6.4"; + private const string ModVersion = "1.6.5"; public static ConfigEntry Config_Locked; public static ConfigEntry Config_OreMultiplier; @@ -43,10 +43,12 @@ public class MxValheimMod : BaseUnityPlugin public static string internalConfigsPath = Path.Combine(modPath, "Configs"); public static string internalDataPath = Path.Combine(modPath, "Data"); public static string internalDataEventSystem = Path.Combine(internalDataPath, "EventSystem.json"); + public static string DropConfigPath => Path.Combine(internalConfigsPath, "items_drop.json"); public static string WeightConfigPath => Path.Combine(internalConfigsPath, "items_weight.json"); public static string AutoDoorConfigPath => Path.Combine(internalConfigsPath, "auto_doors.json"); public static DoorRoot CachedConfig; public static Dictionary WeightSettings = new Dictionary(); + public static Dictionary DropSettings = new Dictionary(); public static bool initExpBar = true; @@ -314,32 +316,34 @@ public class MxValheimMod : BaseUnityPlugin } } - private bool LoadJsonConfig() + private void LoadJsonConfig() { - try - { - if (!File.Exists(WeightConfigPath)) - { - WeightSettings = new Dictionary { { "Wood", 1.0f }, { "Stone", 1.0f } }; - File.WriteAllText(WeightConfigPath, JsonConvert.SerializeObject(WeightSettings, Newtonsoft.Json.Formatting.Indented)); - return true; - } + string json = ""; - string json = File.ReadAllText(WeightConfigPath); - WeightSettings = JsonConvert.DeserializeObject>(json); - Logger.LogInfo($"Successfully parsed {WeightSettings.Count} items."); - return true; - } - catch (Exception ex) + if (!File.Exists(WeightConfigPath)) { - Logger.LogWarning($"Could not read JSON (might be busy): {ex.Message}"); - return false; + WeightSettings = new Dictionary { { "Wood", 1.0f }, { "Stone", 1.0f } }; + File.WriteAllText(WeightConfigPath, JsonConvert.SerializeObject(WeightSettings, Newtonsoft.Json.Formatting.Indented)); } + + json = File.ReadAllText(WeightConfigPath); + WeightSettings = JsonConvert.DeserializeObject>(json); + Logger.LogInfo($"Successfully parsed {WeightSettings.Count} items."); + + if (!File.Exists(DropConfigPath)) + { + DropSettings = new Dictionary { { "Wood", 3 }, { "CopperOre", 3 }, { "TinOre", 3 }, { "IronScrap", 3 }, { "SilverOre", 3 }, { "Obsidian", 3 }, { "BlackMetalScrap", 3 }, { "BlackMarble", 3 }, { "FlametalOreNew", 3 } }; + File.WriteAllText(DropConfigPath, JsonConvert.SerializeObject(DropSettings, Newtonsoft.Json.Formatting.Indented)); + } + + json = File.ReadAllText(DropConfigPath); + DropSettings = JsonConvert.DeserializeObject>(json); + Logger.LogInfo($"Successfully parsed {DropSettings.Count} items."); } public void LoadDoorConfig() { - if (System.IO.File.Exists(AutoDoorConfigPath)) + if (File.Exists(AutoDoorConfigPath)) { string json = System.IO.File.ReadAllText(AutoDoorConfigPath); CachedConfig = JsonConvert.DeserializeObject(json); diff --git a/MxValheim/Patch/Ores.cs b/MxValheim/Patch/Ores.cs index b27ac2d..90669e2 100644 --- a/MxValheim/Patch/Ores.cs +++ b/MxValheim/Patch/Ores.cs @@ -14,17 +14,13 @@ namespace MxValheim.Patch { if (__result == null || __result.Count == 0) return; - int countToAdd = MxValheimMod.Config_OreMultiplier.Value - 1; - if (countToAdd <= 0) return; - List extraDrops = new List(); foreach (var item in __result) { - string name = item.name.ToLower(); - if (name.Contains("ore") || name.Contains("scrap")) + if (item != null && MxValheimMod.DropSettings.TryGetValue(item.name, out int newDropMulti)) { - for (int i = 0; i < countToAdd; i++) + for (int i = 0; i < newDropMulti; i++) { extraDrops.Add(item); }