[1.1.76] Module inventory get_insertable_count return wrong count

Bugs that are actually features.
Post Reply
Theis
Inserter
Inserter
Posts: 29
Joined: Tue Sep 13, 2022 9:57 am
Contact:

[1.1.76] Module inventory get_insertable_count return wrong count

Post by Theis »

This is for scripting and it applies at least to assembling machines & beacons.

Module inventories get_insertable_count reports a count that is off by a factor 50. Which aligns with the stack-size of modules.
For an empty beacon I would expect get_insertable_count to return 2.

Reproduction code:

Code: Select all

/c do 
	local p = game.player
	local e = p.surface.create_entity{name="beacon",position={2,2},force=p.force}
	local i = e.get_inventory(defines.inventory.beacon_modules)
	local i1 = i.get_insertable_count("speed-module")
	local bi1 = i.can_insert({name="speed-module", count=1})
	
	local c1 = i.insert({name="speed-module", count=1})
	local i2 = i.get_insertable_count("speed-module")
	
	
	local c2 = i.insert({name="speed-module", count=1})
	local i3 = i.get_insertable_count("speed-module")
	
	local bi2 = i.can_insert({name="speed-module", count=1})
	
	game.print(string.format("inventory counts: [%d, %d, %d]", i1, i2, i3))
	game.print(string.format("insert counts: [%d, %d]", c1, c2))
	game.print(string.format("can insert: [before:%s, after:%s]", bi1, bi2))
	
	
	local e2 = p.surface.create_entity{name="assembling-machine-3",position={-1,2},force=p.force}
	e2.set_recipe("iron-gear-wheel")
	local ai = e2.get_inventory(defines.inventory.assembling_machine_modules)
	game.print(string.format("Count for assembling machine: %d, inserted count: %d", 
		ai.get_insertable_count("speed-module"), 
		ai.insert({name="speed-module", count=ai.get_insertable_count("speed-module")})
		))
end
Code output in empty world:
report-get_insertable_count 2023-02-07.png
report-get_insertable_count 2023-02-07.png (379.67 KiB) Viewed 1770 times

Theis
Inserter
Inserter
Posts: 29
Joined: Tue Sep 13, 2022 9:57 am
Contact:

Re: [1.1.76] Module inventory get_insertable_count return wrong count

Post by Theis »

Somewhat related. It is also reported wrong for fast assemblers unbarreling.

Code: Select all

/c do 
	local p = game.player
	
	local item = "water-barrel"
	local e2 = p.surface.create_entity{name="assembling-machine-3",position={-1,2},force=p.force}
	e2.set_recipe("empty-water-barrel")
	e2.get_inventory(defines.inventory.assembling_machine_modules).insert("speed-module-3")
	local ai = e2.get_inventory(defines.inventory.assembling_machine_input)
	game.print(string.format("Count insertable count: %d, inserted count: %d", 
		ai.get_insertable_count(item), 
		ai.insert({name=item, count=ai.get_insertable_count(item)})
		))
	game.print(string.format("Extra insert: reported:%d, inserted count: %d", 
		ai.get_insertable_count(item), 
		ai.insert({name=item, count=200})
		))
end
report-get_insertable_count-extra 2023-02-07.png
report-get_insertable_count-extra 2023-02-07.png (312.03 KiB) Viewed 1734 times

Rseding91
Factorio Staff
Factorio Staff
Posts: 13346
Joined: Wed Jun 11, 2014 5:23 am
Contact:

Re: [1.1.76] Module inventory get_insertable_count return wrong count

Post by Rseding91 »

Thanks for the report however: please see the notes on that function https://lua-api.factorio.com/latest/Lua ... able_count
If you want to get ahold of me I'm almost always on Discord.

Post Reply

Return to “Not a bug”