diff --git a/config/_file_loader.lua b/config/_file_loader.lua index a6a6928f..82b20409 100644 --- a/config/_file_loader.lua +++ b/config/_file_loader.lua @@ -44,6 +44,7 @@ return { 'modules.commands.vlayer', 'modules.commands.enemy', 'modules.commands.waterfill', + 'modules.commands.surface-clearing', --- Addons 'modules.addons.chat-popups', diff --git a/config/expcore/roles.lua b/config/expcore/roles.lua index 9b4cf7ac..416e9f2d 100644 --- a/config/expcore/roles.lua +++ b/config/expcore/roles.lua @@ -230,8 +230,10 @@ Roles.new_role('Member','Mem') 'command/auto-research', 'command/manual-train', 'command/lawnmower', - 'gui/surveillance', - 'command/waterfill' + 'command/waterfill', + 'command/clear-item-on-ground', + 'command/clear-blueprint', + 'gui/surveillance' } local hours3, hours15 = 3*216000, 15*60 diff --git a/modules/commands/surface-clearing.lua b/modules/commands/surface-clearing.lua new file mode 100644 index 00000000..99e4254a --- /dev/null +++ b/modules/commands/surface-clearing.lua @@ -0,0 +1,33 @@ +--[[-- Commands Module - Clear Item On Ground + - Adds a command that clear item on ground so blueprint can deploy safely + @commands Clear Item On Ground +]] + +local copy_items_stack = _C.copy_items_stack --- @dep expcore.common +local Commands = require 'expcore.commands' --- @dep expcore.commands +require 'config.expcore.command_general_parse' + +Commands.new_command('clear-item-on-ground', 'Clear Item On Ground') +:add_param('range', false, 'integer-range', 1, 1000) +:register(function(player, range) + for _, e in pairs(player.surface.find_entities_filtered{position=player.position, radius=range, name='item-on-ground'}) do + if e.stack then + -- calling move_items_stack(e.stack) will crash to desktop + -- https://forums.factorio.com/viewtopic.php?f=7&t=110322 + copy_items_stack{e.stack} + e.stack.clear() + end + end + + return Commands.success +end) + +Commands.new_command('clear-blueprint', 'Clear Blueprint') +:add_param('range', false, 'integer-range', 1, 1000) +:register(function(player, range) + for _, e in pairs(player.surface.find_entities_filtered{position=player.position, radius=range, type='entity-ghost'}) do + e.destroy() + end + + return Commands.success +end) \ No newline at end of file