mspielberg / factorio-beltlayer

A Factorio mod for laying arbitrary underground belt paths
https://mods.factorio.com/mod/beltlayer
GNU Lesser General Public License v3.0
6 stars 7 forks source link

Error when upgrading underground belts underground #6

Open fisduf opened 4 years ago

fisduf commented 4 years ago

Hi, beltlayer basically works fine, thanks for the wonderful mod! I can put belts/splitters/UB on the underground surface, and can upgrade belts and splitters just fine using the game inbuilt planner. However, when trying to upgrade underground belts it raises an error: image This result is exactly the same on 0.6.4 and 0.6.5 - tried the latter in the hope that this was fixed already :) Looking at the code didn't help - indeed the argument to to proxy_name doesn't have the key belt_to_ground_type, and nothing looks obviously wrong around that function call.

Rohaq commented 3 years ago

Can confirm, I get a similar error.

Newspaperman57 commented 3 years ago

This still happens on 2.0.3, and also when copying/blueprinting an area with ghost-underground-belts. This causes the whole server to shutdown, loose progress until the last save, and due to the number of mods we are running, it takes a whole 5 minutes to start up again. Since blueprinting are a big part of our game, we have to be very careful, and despite taking great care, this still happens around once every hour we play, meaning we loose 5-10 minutes for every 60 minutes we are playing.

Please give this bug priority. I'm a developer myself but have limited experience with Lua and no experience with modding factorio, but with some pointers as to what the problem is, i'll give it a shot. We are also willing to beta-test and provide more information if needed.

Error message from server-log:

16869.989 Error MainLoop.cpp:1285: Exception at tick 35085648: The mod Beltlayer (2.0.3) caused a non-recoverable error.
Please report this error to the mod author.

Error while running event beltlayer::on_player_setup_blueprint (ID 69)
__beltlayer__/Editor.lua:72: attempt to index local 'entity' (a nil value)
stack traceback:
    __beltlayer__/Editor.lua:72: in function 'proxy_name'
    __beltlayer__/lualib/BaseEditor/BaseEditor.lua:703: in function 'convert_bp_entities_to_bpproxies'
    __beltlayer__/lualib/BaseEditor/BaseEditor.lua:775: in function 'capture_underground_entities_in_blueprint'
    __beltlayer__/Editor.lua:448: in function 'on_player_setup_blueprint'
    __beltlayer__/control.lua:33: in function <__beltlayer__/control.lua:33>
16869.990 Error ServerMultiplayerManager.cpp:91: MultiplayerManager failed: "The mod Beltlayer (2.0.3) caused a non-recoverable error.
Please report this error to the mod author.

Error while running event beltlayer::on_player_setup_blueprint (ID 69)
__beltlayer__/Editor.lua:72: attempt to index local 'entity' (a nil value)
stack traceback:
    __beltlayer__/Editor.lua:72: in function 'proxy_name'
    __beltlayer__/lualib/BaseEditor/BaseEditor.lua:703: in function 'convert_bp_entities_to_bpproxies'
    __beltlayer__/lualib/BaseEditor/BaseEditor.lua:775: in function 'capture_underground_entities_in_blueprint'
    __beltlayer__/Editor.lua:448: in function 'on_player_setup_blueprint'
    __beltlayer__/control.lua:33: in function <__beltlayer__/control.lua:33>"
16869.990 Info ServerMultiplayerManager.cpp:780: updateTick(35085648) changing state from(InGame) to(Failed)
mspielberg commented 3 years ago

Can you provide exact steps to this on_player_setup_blueprint error from a given save? I'm having trouble reproducing the issue.

The error seems to indicate that a freshly created blueprint in the underground area captures entities that cannot be found in that same location just a few lines later.