From 8ae11445853523edb3cb15d23f4700acc4262227 Mon Sep 17 00:00:00 2001 From: bbassie <17990055+bbassie@users.noreply.github.com> Date: Thu, 6 Aug 2026 21:34:54 +0000 Subject: [PATCH] Fix logistic network stats for the 2.0 api `get_contents` and `targeted_items_pickup`/`_deliver` return lists of ItemWithQualityCount in 2.0, they are no longer name keyed dictionaries, so the logistorage stats were indexing by array position. PreferenceEnum is bidirectional, matching what ExpUtil.enum returns. Co-Authored-By: Claude Opus 5 (1M context) --- exp_legacy/module/expcore/player_data.lua | 2 +- exp_legacy/module/modules/graftorio/forcestats.lua | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/exp_legacy/module/expcore/player_data.lua b/exp_legacy/module/expcore/player_data.lua index b6862873..07318191 100644 --- a/exp_legacy/module/expcore/player_data.lua +++ b/exp_legacy/module/expcore/player_data.lua @@ -55,7 +55,7 @@ PlayerData:set_serializer(Datastore.name_serializer) -- use player name --- Store and enum for the data saving preference local DataSavingPreference = PlayerData:combine("DataSavingPreference") -local PreferenceEnum = { "All", "Statistics", "Settings", "Required" } +local PreferenceEnum = { "All", "Statistics", "Settings", "Required" } --- @type table for k, v in ipairs(PreferenceEnum) do PreferenceEnum[v] = k end DataSavingPreference:set_default("All") diff --git a/exp_legacy/module/modules/graftorio/forcestats.lua b/exp_legacy/module/modules/graftorio/forcestats.lua index a515869a..195f2e4c 100644 --- a/exp_legacy/module/modules/graftorio/forcestats.lua +++ b/exp_legacy/module/modules/graftorio/forcestats.lua @@ -126,19 +126,19 @@ lib.collect_loginet = function() end if config.modules.logistorage then - for name, v in pairs(network.get_contents()) do - stats.items[name] = (stats.items[name] or 0) + v + for _, item in pairs(network.get_contents()) do + stats.items[item.name] = (stats.items[item.name] or 0) + item.count end -- pickups and deliveries of items for _, point_list in pairs{ network.provider_points, network.requester_points, network.storage_points } do for _, point in pairs(point_list) do - for name, qty in pairs(point.targeted_items_pickup) do - stats.pickups[name] = (stats.pickups[name] or 0) + qty + for _, item in pairs(point.targeted_items_pickup) do + stats.pickups[item.name] = (stats.pickups[item.name] or 0) + item.count end - for name, qty in pairs(point.targeted_items_deliver) do - stats.deliveries[name] = (stats.deliveries[name] or 0) + qty + for _, item in pairs(point.targeted_items_deliver) do + stats.deliveries[item.name] = (stats.deliveries[item.name] or 0) + item.count end end end