Skip to content

Commit 774236a

Browse files
qol when mining an inserter, pick up item an inserter dropped on the ground (#1250)
- Added qol so when an inserter is mined, an item put on the ground by the inserter is also picked up. enabled by default, tested and should work properly. - inserter drops pickup, fix get_set_alt_on_create typo.
1 parent 7eb1c95 commit 774236a

File tree

2 files changed

+56
-3
lines changed

2 files changed

+56
-3
lines changed

config.lua

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,9 @@ global.config = {
345345
-- prevents personal construction robots from being mined by other players
346346
save_bots = true,
347347
-- enable research_queue
348-
research_queue = true
348+
research_queue = true,
349+
-- pick up item an inserter put on the ground, when the inserter is mined
350+
inserter_drops_pickup = true
349351
},
350352
-- adds a useless button with the biter percentage
351353
evolution_progress = {

features/redmew_qol.lua

Lines changed: 53 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ local random = math.random
1818
local Public = {}
1919

2020
-- Global registers
21-
local enabled = {random_train_color = nil, restrict_chest = nil, change_backer_name = nil, set_alt_on_create = nil}
21+
local enabled = {random_train_color = nil, restrict_chest = nil, change_backer_name = nil, set_alt_on_create = nil, inserter_drops_pickup = nil}
2222

2323
Global.register({enabled = enabled}, function(tbl)
2424
enabled = tbl.enabled
@@ -82,6 +82,26 @@ local set_alt_on_create = Token.register(function(event)
8282
player.game_view_settings.show_entity_info = true
8383
end)
8484

85+
local controllers_with_inventory = {
86+
[defines.controllers.character] = true,
87+
[defines.controllers.god] = true,
88+
[defines.controllers.editor] = true,
89+
}
90+
91+
--- Pickup the item an inserter put on the ground when the inserter is mined
92+
local inserter_drops_pickup = Token.register(function(event)
93+
local inserter = event.entity
94+
if (not inserter.valid) or (inserter.type ~= "inserter") or inserter.drop_target then return end
95+
96+
local item_entity = inserter.surface.find_entity("item-on-ground", inserter.drop_position)
97+
if item_entity then
98+
local player = game.get_player(event.player_index)
99+
if controllers_with_inventory[player.controller_type] then
100+
player.mine_entity(item_entity)
101+
end
102+
end
103+
end)
104+
85105
local loaders_technology_map = {
86106
['logistics'] = 'loader',
87107
['logistics-2'] = 'fast-loader',
@@ -180,6 +200,15 @@ local function register_set_alt_on_create()
180200
return true
181201
end
182202

203+
local function register_inserter_drops_pickup()
204+
if enabled.inserter_drops_pickup then
205+
return false -- already registered
206+
end
207+
enabled.inserter_drops_pickup = true
208+
Event.add_removable(defines.events.on_player_mined_entity, inserter_drops_pickup)
209+
return true
210+
end
211+
183212
local function on_init()
184213
-- Set player force's ghost_time_to_live to an hour. Giving the players ghosts before the research of robots is a nice QOL improvement.
185214
if config.ghosts_before_research then
@@ -273,10 +302,29 @@ function Public.set_set_alt_on_create(enable)
273302
end
274303

275304
--- Return status of set_alt_on_create
276-
function Public.set_alt_on_create()
305+
function Public.get_set_alt_on_create()
277306
return enabled.set_alt_on_create or false
278307
end
279308

309+
--- Sets inserter_drops_pickup on or off.
310+
-- @param enable <boolean> true to toggle on, false for off
311+
-- @return <boolean> Success/failure of command
312+
function Public.set_inserter_drops_pickup(enable)
313+
if enable then
314+
return register_inserter_drops_pickup()
315+
else
316+
Event.remove_removable(defines.events.on_player_mined_entity, inserter_drops_pickup)
317+
enabled.inserter_drops_pickup = false
318+
return true
319+
end
320+
end
321+
322+
--- Return status of inserter_drops_pickup
323+
function Public.get_inserter_drops_pickup()
324+
return enabled.inserter_drops_pickup or false
325+
end
326+
327+
280328
-- Initial event setup
281329

282330
if config.random_train_color then
@@ -291,6 +339,9 @@ end
291339
if config.set_alt_on_create then
292340
register_set_alt_on_create()
293341
end
342+
if config.inserter_drops_pickup then
343+
register_inserter_drops_pickup()
344+
end
294345

295346
if config.save_bots then
296347
Event.add(defines.events.on_selected_entity_changed, preserve_bot)

0 commit comments

Comments
 (0)