Featured Live gallery
MTR Traffic Addon Icon

MTR Traffic Addon

mtr addon featuring traffic generation

Minecraft Mod Addon Technology Transportation
Mod pages

Version history

Every changelog entry is grouped by version so visitors can track what actually changed.

Release

26.6.B03a

Vehicles and rendering ---------------------- - Added the built-in taxi sedan resources: - mta_sedan_taxi - sedan_taxi - sedan_taxi.obj / sedan_taxi.mtl - sedan_taxi.png / taxi_sign.png - Added the built-in hatchback resources: - mta_hatchback / hatchback - mta_hatchback_white / hatchback_white - mta_hatchback_gray / hatchback_gray - mta_hatchback_blue / hatchback_blue - mta_hatchback_brown / hatchback_brown - mta_hatchback_green / hatchback_green - mta_hatchback_orange / hatchback_orange - mta_hatchback_pink / hatchback_pink - mta_hatchback_red / hatchback_red - hatchback.obj and hatchback texture variants - Hatchback OBJ rendering uses per-variant default textures from traffic model definitions instead of a fixed MTL map_Kd texture. - Added OBJ material-library loading for traffic models. - Added per-face texture selection from MTL map_Kd entries. - Added route pitch to traffic debug snapshots, server networking, client interpolation, and custom/MTR/placeholder render state. - Added deterministic lateral vehicle offset and small deterministic custom-render pitch variation. Traffic lights and bindings --------------------------- - Added Pedestrian Lights and Pedestrian Lights Pole blocks, items, blockstates, models, textures, loot tables, translations, creative-tab entries, pickaxe tags, and emissive overlays. - Added TrafficLightBindingTargetType with NODE and GROUP target modes. - Updated saved traffic light bindings to retain backwards compatibility with old node-only bindings while supporting group targets. - Updated the brush binding screen/networking to list signal groups before IN nodes and send target type plus target number. - Added group signal-state lookup so bound lights can follow a whole signal group. Simulation and spacing ---------------------- - Added materialization clearance checks against active addon vehicles and recently observed MTR vehicles. - Added skipped virtual vehicle tracking so unsafe virtual departures are not retried every simulation pass. - Added next-segment entry limits to prevent vehicles entering occupied/full segments. - Refined signal occupancy checks to apply at signal entry boundaries instead of every segment that shares a signal color. - Spawn connector route traversal now prefers saved node direction, while retaining reverse traversal for old saved spawn points. - Despawn connector segments remain protected from vehicle materialization. Documentation ------------- - Updated README with 26.6.B03a status, taxi/hatchback resources, pedestrian/group binding behavior, and clearance-aware materialization. - Updated docs/ADDON_DOCUMENTATION.md with B03a runtime behavior, pedestrian lights, group bindings, OBJ MTL texture support, taxi/hatchback resources, and current jar names. - Updated docs/RESOURCE_PACK_AUTHORING.md and CUSTOM_TRAFFIC_MODELS.md with taxi/hatchback IDs and OBJ material texture support. - Updated the standalone resource pack README and pack metadata to describe road vehicle resources instead of sedan-only resources.
Release

26.5.B01a

- 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
Release

26.5.B01

Official open BETA - cleaned trash code - mtr route integration fixes
Release

26.5.A05

Changelog - Added traffic light blocks, poles, vertical poles, and primary traffic lights. - Added red, yellow, green, and off traffic light variants. - Added brush binding UI for linking traffic lights to intersection node IDs. - Traffic lights now follow bound intersection signal states. - Fixed yellow signal behavior so only transitioning nodes turn yellow. - Added emissive glow for active traffic light lenses. - Fixed traffic light transparency and several glow placement issues. - Improved vertical pole placement so it faces the player. - Updated traffic dashboard item texture. - Updated license terms to reserve rights while allowing modpacks, showcases, and videos with credit.
Release

26.5.A03

- Fixed stale traffic spawn/despawn connectors staying alive after their rails were deleted. They now get removed instead of snapping to random nearby tracks. - Changed vehicle spawning so spawn tracks must be clear before another vehicle can appear. - Removed hard vehicle spawn caps. Spawning is now controlled by spawn interval and track clearance. - Increased MTR graph query range and made connector routing check both rail directions, improving route discovery for valid tracks. - Cleaned up the dashboard by hiding Max Vehicles controls and updating spawn-limit text. - Added an all-red intersection clearance phase between signal groups, then increased it from 5s to 10s. - Updated MOD_STATUS_SUMMARY.txt for 26.5.A03. - Verified builds successfully with Java 21.
Release

26.5.A02

MTR Traffic Addon - Status Summary Updated: 2026-05-19 Version covered: 26.5.A02 Current working state ===================== - The mod builds successfully as a Fabric 1.20.1 addon for Minecraft Transit Railway 4.0.4. - The local MTR jar is included as a Gradle dependency. - The project builds with Java 23 via: JAVA_HOME=C:\Program Files\Java\jdk-23 - The current built jar is: D:\mta\build\libs\mtr-traffic-addon-26.5.A02.jar - The latest test/install copy was placed in: C:\Users\opale\AppData\Roaming\ModrinthApp\profiles\CookieCraftModsMTR\mods\mtr-traffic-addon-26.5.A02.jar - The Traffic Dashboard item opens the client dashboard UI. - Spawn and despawn traffic connectors are listed in the dashboard. - Spawn/despawn connectors show position, enabled state, active vehicle count, and route status. - Connector routes can be refreshed from the dashboard. - Active traffic vehicles can be cleared from the dashboard. - Spawn connectors can open the Vehicle Pool screen. - Vehicle pools can select available MTR vehicle resources for each spawn connector. - The standalone sedan resource pack was stabilized, then embedded into the mod jar. - Players no longer need to install the sedan resource pack separately when using the current mod jar. - The resourcepack copy under resourcepacks/mtr-traffic-addon-sedan is kept as a source/export/testing copy. - Built-in sedan visual IDs: mta_sedan mta_sedan_white mta_sedan_green mta_sedan_red - Legacy visual ID mtr_traffic_addon_sedan:sedan is remapped to mta_sedan for compatibility with older spawned/debug state. - The bundled sedan model properties currently use modelYOffset 0.0. - The MTR vehicle resource renderer no longer uses MTR floors/doorways as a universal render-height anchor. - The renderer queues one MTR render cache at a time instead of mixing normal and doors-closed caches. - Normal MTR vehicles should keep their complete parts because the renderer no longer globally drops arbitrary render buckets. - The sedan no longer renders the accidental flipped duplicate copy. - Traffic vehicles now look ahead across route segments for occupied track sections. - Vehicles should slow down or wait before entering a full next track instead of driving into a queue. - Same-segment and route-lookahead spacing include braking-distance caps. - Configured spawning no longer falls back to random bootstrap vehicles when no enabled spawn/despawn connector route exists. - New worlds with no Traffic Spawn/Despawn Tracks should not randomly spawn sedans. - Intersection areas can be created from the dashboard map. - Existing intersections are listed and selectable. - Intersections can be enabled or disabled. - Intersection node auto-detection can be toggled. - Intersection detection and manual node handling use X/Z containment more reliably, avoiding the previous Y-level mismatch. - Detected IN and OUT nodes are shown on the dashboard map. - Node labels include IN/OUT direction and node numbers. - Signal groups are displayed as clickable rows. - Signal groups can be selected, removed, reordered, and assigned IN nodes. - Multiple IN nodes can belong to more than one signal group. - Selected group nodes and selected nodes are highlighted on the map. - Group green duration can be adjusted. 26.5.A02 traffic bridge status ============================== - MTR route vehicles now use a transient mixin bridge instead of saved MTR BlockRails/SignalModification state. - The rejected visible-signal approach was removed from the active behavior. - The bridge injects into MTR Vehicle.railBlockedDistance(...) so MTR route vehicles can see: - red MTA intersection entries - active MTA spawned vehicles on matching route segments - MTR route checks now use route-direction rail IDs instead of ordered endpoint pairs. - Graph rail IDs are direction-aware via MTR TwoPositionsBase.getHexIdRaw(from, to). - This fixes the earlier issue where MTR vehicles stopped one whole track before the actual obstacle/intersection. - MTR Vehicle.simulate(...) now records transient vehicle occupancy for the current tick. - MTA vehicles now query the transient MTR occupancy cache and treat MTR route vehicles as moving spacing obstacles. - The MTR occupancy mixin uses VehicleSchemaAccessor for inherited railProgress/speed fields. - This fixes the 19:17 and 19:20 server crashes caused by shadowing inherited fields directly on Vehicle. - The occupancy cache is pruned after a short stale window so old MTR positions do not remain as permanent obstacles. Changes since the previous summary ================================== - Updated project version output to 26.5.A02. - Added VehicleMixin for MTR route vehicle blocking/occupancy integration. - Added VehicleSchemaAccessor to safely read MTR VehicleSchema railProgress and speed. - Registered VehicleMixin and VehicleSchemaAccessor in mtr-traffic-addon.mixins.json. - Added TrafficManager.mtrVehicleBlockedDistance(...) for MTR vehicles seeing MTA signals and vehicles. - Added TrafficManager.recordMtrVehicle(...) and closestMtrVehicleObstacle(...) for MTA vehicles seeing MTR vehicles. - Added MTR obstacle spacing to TrafficSpacingResolver. - Changed MtrGraphBuilder rail IDs to be direction-aware raw MTR rail IDs. - Removed automatic MTR resource floor/doorway Y anchoring from MtrVehicleResourceRenderer. - Raised the route render origin back to pathSample.y() by removing the old -0.25 vehicle Y offset. - Set bundled sedan modelYOffset to 0.0 in both embedded resources and the resourcepack copy. - Kept the sedan resource embedded in src/main/resources so it is part of the mod jar. - Preserved the sedan resourcepack copy for authoring/export only. - Confirmed build output: D:\mta\build\libs\mtr-traffic-addon-26.5.A02.jar Resource pack authoring rules learned ===================================== - Road vehicles should usually have exactly one body model in models. - Do not add bogie1Models or bogie2Models for road cars unless they are real separate visible bogie/wheel models. - Do not point bogie models at the full vehicle body. - Do not use an empty bogie properties file as a hiding mechanism. - For a normal body part, use positions and leave positionsFlipped empty. - Do not put [{}] in both positions and positionsFlipped for the same part. - Use condition NORMAL, renderStage EXTERIOR, and type NORMAL for always-visible exterior body geometry. - Keep visual IDs in traffic_vehicles/*.json matched to vehicle IDs in mtr_custom_resources.json. - After embedding resources in the jar, remove old external copies from .minecraft/resourcepacks to avoid stale overrides. - Per-model modelYOffset is safer than deriving road-vehicle height from MTR floor/doorway metadata.
Release

26.5.A01

MTR Traffic Addon - Status Summary Updated: 2026-05-19 Current working state ===================== - The mod builds successfully as a Fabric 1.20.1 addon for Minecraft Transit Railway 4.0.4. - The local MTR jar is included as a Gradle dependency. - The project builds with Java 23 via: JAVA_HOME=C:\Program Files\Java\jdk-23 - The Traffic Dashboard item opens the client dashboard UI. - Spawn and despawn traffic connectors are listed in the dashboard. - Spawn/despawn connectors show position, enabled state, active vehicle count, and route status. - Connector routes can be refreshed from the dashboard. - Active traffic vehicles can be cleared from the dashboard. - Spawn connectors can open the Vehicle Pool screen. - Vehicle pools can select available MTR vehicle resources for each spawn connector. - The standalone sedan resource pack was stabilized, then embedded into the mod jar. - The current jar contains the sedan MTR resources under: assets/mtr/mtr_custom_resources.json assets/mtr_traffic_addon_sedan/... data/mtr_traffic_addon_sedan/traffic_vehicles/... - Players no longer need to install the sedan resource pack separately when using the current mod jar. - Built-in sedan visual IDs: mta_sedan mta_sedan_white mta_sedan_green mta_sedan_red - The sedan model now renders at the correct vertical offset. - The sedan no longer renders the accidental flipped duplicate copy. - The MTR vehicle resource renderer queues one MTR render cache at a time instead of mixing normal and doors-closed caches. - Normal MTR vehicles should keep their complete parts because the renderer no longer globally drops arbitrary render buckets. - Legacy visual ID mtr_traffic_addon_sedan:sedan is remapped to mta_sedan for compatibility with older spawned/debug state. - Traffic vehicles now look ahead across route segments for occupied track sections. - Vehicles should slow down or wait before entering a full next track instead of driving into a queue. - Same-segment and route-lookahead spacing now include braking-distance caps. - Intersection areas can be created from the dashboard map. - Existing intersections are listed and selectable. - Intersections can be enabled or disabled. - Intersection node auto-detection can be toggled. - Detected IN and OUT nodes are shown on the dashboard map. - Node labels include IN/OUT direction and node numbers. - Signal groups are displayed as clickable rows. - Signal groups can be selected, removed, reordered, and assigned IN nodes. - Multiple IN nodes can belong to the same signal group. - Selected group nodes and selected nodes are highlighted on the map. - Group green duration can be adjusted. Changes since the previous summary ================================== - Added a dedicated sedan MTR vehicle resource set with model, textures, model properties, and traffic vehicle definitions. - Added sedan variants using the same model with different textures: default, white, green, and red. - Fixed sedan vertical placement by using modelYOffset -0.75 in the MTR model properties. - Removed the old custom renderer path from the active vehicle rendering flow. - Restored rendering through MTR vehicle resources instead of drawing custom debug geometry. - Fixed blue-box placeholder behavior by using valid MTR visual IDs and keeping a legacy ID remap. - Fixed duplicate sedan rendering caused by an invalid position definition: positions: [{}] positionsFlipped: [] The previous broken form had [{}] in both arrays, which caused one normal and one flipped render. - Removed experimental empty bogie definitions from the sedan resource pack. - Confirmed the current sedan definitions have one body model and zero bogie models. - Embedded the sedan assets and traffic definitions into src/main/resources so they are part of the mod jar. - Kept resourcepacks/mtr-traffic-addon-sedan as a source/export/testing copy, not as a required user install. - Added docs/RESOURCE_PACK_AUTHORING.md with practical MTR resource-pack authoring rules. - Updated README.md to document that sedan resources are now built in. - Updated the sedan pack README to explain its new role and the important authoring constraints. - Improved traffic spacing so vehicles scan up to 80 meters ahead across route segments. - Added braking-distance speed caps to reduce pileups when the next track is occupied. Resource pack authoring rules learned ===================================== - Road vehicles should usually have exactly one body model in models. - Do not add bogie1Models or bogie2Models for road cars unless they are real separate visible bogie/wheel models. - Do not point bogie models at the full vehicle body. - Do not use an empty bogie properties file as a hiding mechanism. - For a normal body part, use positions and leave positionsFlipped empty. - Do not put [{}] in both positions and positionsFlipped for the same part. - Use condition NORMAL, renderStage EXTERIOR, and type NORMAL for always-visible exterior body geometry. - Keep visual IDs in traffic_vehicles/*.json matched to vehicle IDs in mtr_custom_resources.json. - After embedding resources in the jar, remove old external copies from .minecraft/resourcepacks to avoid stale overrides. Known limitations and remaining work ==================================== - The default Java environment still points to Java 17 on this machine, while the current Fabric Loom setup needs Java 21 or newer. JAVA_HOME is currently set manually to Java 23 for builds. - The dashboard still has many text-heavy controls and could be made more compact. - The group list needs scrolling or pagination for intersections with many signal groups. - Removing a signal group is immediate; confirmation or undo would reduce accidental deletion. - Node assignment works, but the UI could make the IN-node-only rule clearer. - OUT nodes are shown and numbered, but their role could be clearer in the UI. - Map labels can overlap when nodes are close together. - The intersection editor could be improved with more direct drag/drop or node-to-group interactions. - Signal group names are generated and still cannot be renamed from the dashboard. - The dashboard does not show a live preview of the currently green signal group. - Intersection area drawing works, but first/second corner feedback could be clearer. - Vehicle pool management still needs better search, filtering, and missing-resource warnings. - Connector lists need sorting and filtering for larger worlds. - More in-game validation messages are needed for missing routes, empty vehicle pools, and signal groups without IN nodes. - The mod should be tested in a larger world with many connectors, intersections, and active vehicles. - Multiplayer synchronization and permissions still need dedicated testing. - The saved data format should be reviewed before release to reduce future world-breaking changes. - Automated tests are not present. Core routing, spacing, signal, and resource ID logic would benefit from unit tests. - A clean release test should be run with only Fabric API, MTR, and this addon installed. Build verification ================== Last verified command: JAVA_HOME=C:\Program Files\Java\jdk-23 .\gradlew.bat build Result: BUILD SUCCESSFUL Current jar: D:\mta\build\libs\mtr-traffic-addon-26.5.ALPHA.jar
Release

26.5.Alpha

MTR Traffic Addon - Status Summary What works ========== - The mod is set up as a Fabric 1.20.1 addon for Minecraft Transit Railway. - The local MTR jar is included as a Gradle dependency. - The Traffic Dashboard item opens a client UI with a map view. - Traffic connector entries are listed in the dashboard. - Spawn and despawn connectors show their position, enabled state, active vehicle count, and route status. - Spawn connectors can open the Vehicle Pool screen. - The Vehicle Pool screen can display available MTR vehicles and selected vehicles for a spawn connector. - Connector routes can be refreshed from the dashboard. - Active traffic vehicles can be cleared from the dashboard. - Intersection areas can be created from the dashboard by drawing an area on the map. - Existing intersections are listed and can be selected. - Intersections can be enabled or disabled. - Intersection node auto-detection can be toggled. - Detected intersection nodes are shown on the map. - Node labels are shown on the selected intersection map view, using IN and OUT labels with node numbers. - Signal groups are displayed as clickable rows. - A signal group can be selected directly from the group list. - A signal group can be removed with the small x button next to its row. - IN nodes can be assigned to the selected signal group. - Multiple IN nodes can be assigned to the same signal group, so two lanes in the same direction can go green together. - Selected group nodes are highlighted on the map. - The selected node is highlighted on the map. - Group green duration can be adjusted. - Signal groups can be reordered. - The project builds successfully when Gradle is run with Java 23. What needs improvement or repair ================================ - The default Java environment points to Java 17, but the current Fabric Loom version requires Java 21 or newer. JAVA_HOME should be updated, or Gradle should be configured to use a Java 21+ toolchain. - The dashboard still uses many text buttons. It is clearer than before, but it could benefit from a more compact control layout and stronger visual hierarchy. - The group list currently shows only a limited number of rows. If an intersection has many groups, scrolling or pagination should be added. - The x button deletes a group immediately. A confirmation step or undo would reduce accidental data loss. - Node assignment is functional, but the UI should make it even clearer that only IN nodes can be assigned to signal groups. - OUT nodes are displayed and numbered, but their role could be explained better in the UI. - The map node labels can overlap when nodes are close together. Label placement should be improved to avoid clutter. - The intersection editor still depends on manual clicking and buttons. A drag-and-drop or direct node-to-group interaction would be easier for users. - Group names are generated automatically and cannot be renamed from the dashboard yet. - The dashboard does not currently show a live signal preview of which group is green at the current server tick. - The intersection area drawing workflow works, but it could use clearer visual feedback for the first and second corner. - Vehicle pool management works, but search, filtering, and missing vehicle warnings could be made more user-friendly. - The connector list could use sorting and filtering, especially for worlds with many connectors. - More in-game validation messages are needed when a route is missing, a vehicle pool is empty, or a group has no IN nodes. - README documentation is minimal and should be expanded with setup, usage, screenshots, and troubleshooting. - The mod should be tested in a larger world with many connectors, intersections, and active vehicles. - The mod should be tested in multiplayer to confirm server-client synchronization and permissions. - The saved data format should be reviewed before release to avoid breaking worlds later. - Automated tests are not present. Core traffic routing and signal group logic would benefit from unit tests. - A release build should be checked in a clean Minecraft instance with only Fabric API, MTR, and this addon installed. Build note ========== The project currently builds with: JAVA_HOME=C:\Program Files\Java\jdk-23 The default Java 17 runtime is not sufficient for the configured Fabric Loom version.
Mod Discussion

0 visible comments in this mod discussion.

Reports go to staff review, and filters block spam, invite links, and abusive content automatically.

Sign in to join this mod discussion.

Comments, replies, reactions, and reports are only available to logged-in users.

Sign in with Discord

No discussion yet. Start the first thread for this mod.