From 843de85206b2641b73fe36dbb41d01b429833b86 Mon Sep 17 00:00:00 2001 From: PHIDIAS Date: Tue, 14 Jan 2025 13:26:49 +0900 Subject: [PATCH] . --- exp_commands/module/commands/authorities.lua | 2 +- .../module/modules/addons/death-logger.lua | 2 -- exp_util/module/module_exports.lua | 33 +++++++++---------- type.patch.lua | 3 ++ 4 files changed, 19 insertions(+), 21 deletions(-) diff --git a/exp_commands/module/commands/authorities.lua b/exp_commands/module/commands/authorities.lua index 57b1ce28..db82a6ce 100644 --- a/exp_commands/module/commands/authorities.lua +++ b/exp_commands/module/commands/authorities.lua @@ -82,7 +82,7 @@ authorities.character_only = --- If a command has the flag "remote_only" then the command can only be used inside of remote view authorities.remote_only = add(function(player, command) - if command.flags.character_only and player.controller_type ~= defines.controllers.remote then + if command.flags.remote_only and player.controller_type ~= defines.controllers.remote then return deny{ "exp-commands-authorities.remote-only" } else return allow() diff --git a/exp_legacy/module/modules/addons/death-logger.lua b/exp_legacy/module/modules/addons/death-logger.lua index 831d312c..760c407d 100644 --- a/exp_legacy/module/modules/addons/death-logger.lua +++ b/exp_legacy/module/modules/addons/death-logger.lua @@ -152,14 +152,12 @@ if config.auto_collect_bodies then Event.add(defines.events.on_character_corpse_expired, function(event) local corpse = event.corpse local inventory = assert(corpse.get_inventory(defines.inventory.character_corpse)) - --[[ ExpUtil.transfer_inventory_to_surface{ inventory = inventory, surface = corpse.surface, name = "steel-chest", allow_creation = true, } - ]] end) end diff --git a/exp_util/module/module_exports.lua b/exp_util/module/module_exports.lua index a5deec4b..903821fa 100644 --- a/exp_util/module/module_exports.lua +++ b/exp_util/module/module_exports.lua @@ -403,6 +403,7 @@ end function ExpUtil.get_storage_for_stack(options) local surface = assert(options.surface, "A surface must be provided") local item = assert(options.item, "An item stack must be provided") + assert(type(item) ~= "userdata" or item.valid_for_read, "Invalid stack provided") -- Perform a search if on has not been done already local cache = options.cache @@ -420,16 +421,6 @@ function ExpUtil.get_storage_for_stack(options) local current, count, entities = cache.current, cache.count, cache.entities for i = 1, cache.count do local entity = entities[((current + i - 1) % count) + 1] - if entity == nil then - -- See Github Issue #352 - error("entity was nil, context:\n" .. ExpUtil.format_any({ - cache = cache, - i = i, - }, { - max_line_count = 0, - no_locale_strings = true - })) - end if entity.can_insert(item) then cache.current = current + 1 return entity @@ -454,7 +445,7 @@ function ExpUtil.get_storage_for_stack(options) assert(entity, "Failed to create a new entity") cache.count = count + 1 - entities[count] = entity + entities[count + 1] = entity return entity end @@ -468,9 +459,12 @@ end function ExpUtil.copy_items_to_surface(options) local entity for item_index = 1, #options.items do - options.item = options.items[item_index] - entity = ExpUtil.get_storage_for_stack(options) - entity.insert(options.item) + local item = options.items[item_index] + if type(item) ~= "userdata" or item.valid_for_read then + options.item = item + entity = ExpUtil.get_storage_for_stack(options) + entity.insert(options.item) + end end return entity end @@ -485,10 +479,13 @@ end function ExpUtil.move_items_to_surface(options) local entity for item_index = 1, #options.items do - options.item = options.items[item_index] - entity = ExpUtil.get_storage_for_stack(options) - entity.insert(options.item) - options.item.clear() + local item = options.items[item_index] + if type(item) ~= "userdata" or item.valid_for_read then + options.item = item + entity = ExpUtil.get_storage_for_stack(options) + entity.insert(options.item) + options.item.clear() + end end return entity end diff --git a/type.patch.lua b/type.patch.lua index b27b5997..64cd9f6e 100644 --- a/type.patch.lua +++ b/type.patch.lua @@ -29,7 +29,10 @@ script = { --- --- Type patched in 2.0.28: [Bug Report](https://forums.factorio.com/viewtopic.php?f=233&t=125062) --- Changed "event" from "string | integer" to "LuaEventType" + --- Resolved in 2.0.29, this patch will be removed was version is stable ---@param event LuaEventType ID or name of the event to raise. ---@param data table Table with extra data that will be passed to the event handler. Any invalid LuaObjects will silently stop the event from being raised. raise_event = function(event, data) end; } +---@class LuaObject:userdata +--https://github.com/justarandomgeek/vscode-factoriomod-debug/issues/165