Shoter Rail Signal Planner

by shoter

Provides a tool to automatically place chain and rail signals on rails and intersections. Based on Rail Signal Planner by LeonSkills (https://github.com/LeonSkills/FactorioMods), used under the MIT License.

Utilities
a month ago
2.0
90
Logistics Trains

Changelog

Version: 2.0.1
Date: 2026-08-19
  Bugfixes:
    - Fixed signals sometimes ending up on the wrong side of the track, which made that stretch of
      rail one-way in the wrong direction. Where two rails meet, the planner guessed which end of
      the neighbouring rail it joined by comparing distances. That guess could pick the wrong end
      when a signal had been moved to its alternative spot, swapping the two sides of the track
      from that junction onwards. The joining end is now read from the game instead of guessed.
    - Fixed the planner freezing or leaving signals out when two rail ends share a single signal
      spot, which can happen when a signal is moved to its alternative spot.
    - Fixed placement checks being made for the neutral force instead of your own, so spots taken
      by your own ghosts or by entities marked for deconstruction were treated as blocked. This
      pushed signals onto alternative spots and could leave signals out entirely.
Version: 2.0.0
Date: 2026-08-17
  Info:
    - Initial release of Shoter Rail Signal Planner, a fork of Rail Signal Planner by LeonSkills.
    - Version numbering restarts here and is independent from the original mod.
  Features:
    - Selection tool that places rail signals and rail chain signals on rails and intersections.
    - Works out where a chain signal is needed and where a plain rail signal is enough, so merges
      and intersections do not deadlock.
    - Optionally places signals automatically while you are building rails with a rail planner.
    - Configurable train length and rail signal spacing, stored separately per rail planner.
    - "One-way rails only" mode that refuses to signal rails that would become bidirectional.
    - Supports the 2.0 curved rails, elevated rails and legacy rails.
    - Signals within reach are built from your inventory; anything further away is left as ghosts,
      upgrade orders or deconstruction orders so construction robots finish the job.
    - Existing signals are respected: they are restored and then marked for upgrade or removal
      rather than being replaced silently, which keeps the changes in the undo queue.
    - Reverse-select with the tool to cancel queued signal work, or alt-reverse-select to
      deconstruct signals.
    - Settings menu reachable from the top left button, a shortcut, or right clicking the planner.
    - Remote interface for other mods to register custom rails:
      remote.call("RailSignalPlanner", "add_supported_rail", rail_name, rail_planner_name?)
  Bugfixes:
    - Fixed a crash when restoring a signal at a position that stopped accepting signals after the
      rail layout changed, for example when merging two rail lines into one.
    - Fixed existing ghost signals being deleted instead of restored after the planner ran.
    - Fixed crashes when a signal entity failed to be created and the result was used anyway.
    - Fixed a helper removing the last entry of a list when the entry it was asked to remove was
      not present, which could sever unrelated connections in the signal graph.
    - Fixed a crash when a rail was replaced by another mod and no unique replacement was found.
    - Fixed block length being measured from the wrong rail, and curved rails never being
      recognised, so the distance used to decide how far to look for exits was far too small.
    - Fixed a signal only ever recording the first rail it was attached to.