Page 1 of 1

[2.1.11] Roboport prototypes do not disable themselves upon running out of power.

Posted: Wed Jul 15, 2026 6:17 am
by MeteorSwarm
When cutting off power from a roboport prototype, the roboport will not remove itself from the logistic network as should happen. Instead, robots will remain queued to the roboport, while the robots in the middle of charging will remain suspended in a charging state while no energy is supplied to the robot.

This behavior is not influenced by the `recharge_minimum` value. It appears that roboports are behaving as if they lack a `recharge_minimum` value.

To reproduce:

0. Add the following code to a mod. Load the mod.

Code: Select all

data.raw.roboport.roboport.energy_usage = "0W"
1. Load a fresh save save in cheat mode.
2. Place a roboport. Supply it with power. Place another roboport. Supply it with power
3. Build a constant source of logistic demand, such as a requester chest that requests items from a chest supplied by an inserter removing items from the requester chest.
4. Cut off power from only one roboport. Fill it with logistic robots.
5. When the roboport runs out of power, it will not shut down. Robots queued to charge at it will not attempt to go to the other roboport.


The typical behavior of roboports: When a roboport runs out of energy, it will disable itself, removing itself from the logistic network and prompting robots queued to charge at it to charge themselves elsewhere. When the disabled roboport accumulates energy equal to `recharge_minimum`, it will enable itself and allow robots to charge from it again.

Re: [2.1.11] Roboport prototypes do not disable themselves upon running out of power.

Posted: Wed Jul 15, 2026 9:10 am
by Rseding91
Thanks for the report however I am not able to reproduce any such issue. When I test - it works exactly as you say it should. The roboport loses power and any robots interacting with it fly off to the nearest active roboport + it removes itself from the logistic network.

Re: [2.1.11] Roboport prototypes do not disable themselves upon running out of power.

Posted: Wed Jul 15, 2026 2:53 pm
by MeteorSwarm
I believe the issue might be related some differences between the vanilla roboport and Muluna's burner roboport.

I've written the following debug code to print all parts of the burner roboport and vanilla roboport with different fields.

Code: Select all

local diffs = ""

for field,value in pairs(data.raw.roboport.roboport) do 
    if not rro.deep_equals(value,data.raw.roboport["muluna-burner-roboport-roboport"][field]) then
         diffs = diffs .. (field .. ": " .. serpent.block(value) .. " vs. " .. serpent.block(data.raw.roboport["muluna-burner-roboport-roboport"][field])) .. "\n" 
        end 

        end

error(diffs)
Code output:

Code: Select all

minable: {
  mining_time = 0.1,
  result = "roboport"
} vs. nil
max_health: 500 vs. 10000
energy_source: {
  buffer_capacity = "100MJ",
  input_flow_limit = "5MW",
  type = "electric",
  usage_priority = "secondary-input"
} vs. {
  buffer_capacity = "100MJ",
  input_flow_limit = "0W",
  type = "electric",
  usage_priority = "secondary-input"
}
energy_usage: "50kW" vs. "0W"
base: {
  layers = {
    {
      filename = "__base__/graphics/entity/roboport/roboport-base.png",
      height = 277,
      scale = 0.5,
      shift = {
        0.0625,
        -0.0703125
      },
      width = 228
    },
    {
      draw_as_shadow = true,
      filename = "__base__/graphics/entity/roboport/roboport-shadow.png",
      height = 201,
      scale = 0.5,
      shift = {
        0.890625,
        0.2890625
      },
      width = 294
    }
  }
} vs. {
  layers = {
    {
      filename = "__muluna-graphics__/graphics/entity/burner-roboport/burner-roboport-base.png",
      height = 277,
      scale = 0.5,
      shift = {
        0.0625,
        -0.0703125
      },
      width = 228
    },
    {
      draw_as_shadow = true,
      filename = "__base__/graphics/entity/roboport/roboport-shadow.png",
      height = 201,
      scale = 0.5,
      shift = {
        0.890625,
        0.2890625
      },
      width = 294
    }
  }
}
base_patch: {
  filename = "__base__/graphics/entity/roboport/roboport-base-patch.png",
  height = 100,
  priority = "medium",
  scale = 0.5,
  shift = {
    0.046875,
    -0.15625
  },
  width = 138
} vs. {
  filename = "__muluna-graphics__/graphics/entity/burner-roboport/burner-roboport-base-patch.png",
  height = 100,
  priority = "medium",
  scale = 0.5,
  shift = {
    0.046875,
    -0.15625
  },
  width = 138
}
recharging_animation: {
  animation_speed = 0.5,
  draw_as_glow = true,
  filename = "__base__/graphics/entity/roboport/roboport-recharging.png",
  frame_count = 16,
  height = 35,
  priority = "high",
  scale = 1.5,
  width = 37
} vs. {
  animation_speed = 0.5,
  draw_as_glow = true,
  filename = "__muluna-graphics__/graphics/entity/burner-roboport/burner-roboport-recharging.png",
  frame_count = 16,
  height = 35,
  priority = "high",
  scale = 1.5,
  width = 37
}
Changing input flow limit back to default has already been confirmed to do nothing.
Changing minimum power consumption to a positive value rather than zero fixed the issue.

Revised reproduction instructions: Before performing the same instructions provided earlier, modify the vanilla roboport with the following code:

Code: Select all

data.raw.roboport.roboport.energy_usage = "0W"

Re: [2.1.11] Roboport prototypes do not disable themselves upon running out of power.

Posted: Wed Jul 15, 2026 3:03 pm
by MeteorSwarm
I've made a workaround for myself that mostly fixes the issue, but I would appreciate a proper fix that makes this sort of hack unnecessary. https://github.com/nicholasgower/planet ... d0f09a9d90

Re: [2.1.11] Roboport prototypes do not disable themselves upon running out of power.

Posted: Wed Jul 15, 2026 3:03 pm
by Rseding91
Ah I see. Ok, I've changed it for the next release so a roboport will turn off it runs out of power regardless of passive energy consumption.