@@ -18,7 +18,7 @@ local random = math.random
1818local 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
2323Global .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
8383end )
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+
85105local 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
181201end
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+
183212local 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)
273302end
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
278307end
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
282330if config .random_train_color then
291339if config .set_alt_on_create then
292340 register_set_alt_on_create ()
293341end
342+ if config .inserter_drops_pickup then
343+ register_inserter_drops_pickup ()
344+ end
294345
295346if config .save_bots then
296347 Event .add (defines .events .on_selected_entity_changed , preserve_bot )
0 commit comments