Fixed a dedicated-server crash in the traffic signal tick path:
java.lang.IllegalStateException: End size ... is less than fixed size ...
Replaced the shared MTR vehicle occupancy HashMap with a ConcurrentHashMap because MTR vehicle simulation can update the cache while the server tick is reading it.
Changed MTR signal vehicle snapshot creation from Stream.toList() to a plain loop over the concurrent map values.
Removed the repeated "Spawn blocked: no MTR graph loaded" INFO log that appeared every 5 seconds on empty dedicated servers.
Moved repeated MTR graph refresh, no-rails, in-flight, spawn-planning, and graph-request diagnostics to debug logging.
Kept real load/save failures and explicit player dashboard actions in normal logs.
Verified build output for this changelog:
D:\mta\build\libs\mta-26.5.B01a-fabric-1.20.1.jar