


RUNE RAILS is a modular railway, train, cargo and automation system for Valheim.
Features:
To spawn a functional wagon on rails you must use a Wagon Bundle on a Control Rail.
Building wagons directly with the hammer may be used on the rails, but positioning and automatic coupling with other carts may not work correctly and future usage of a Control Rail might be required.
All Rune Rails content becomes available after defeating:
The system unlocks during the Artisan progression tier.
Contains all Rune Rails categories and build pieces.
All pieces are also available in the Vanilla Hammer under Misc.
Universal railway construction station.
Temporarily replaces:
for BUILDING only.
It does not replace crafting stations.
Rune Rails uses crafted bundles for railway construction, wagons and tools.
Prefab:
RailwayHammer_balRecipe:
| Resource | Amount |
|---|---|
| Iron | 3 |
| FineWood | 4 |
| BronzeNails | 10 |
Prefab:
RailPartsBundle_balRecipe:
| Resource | Amount |
|---|---|
| IronNails | 4 |
| FineWood | 2 |
| BronzeNails | 4 |
| GreydwarfEye | 2 |
Prefab:
WagonPartsBundle_balRecipe:
| Resource | Amount |
|---|---|
| Iron | 2 |
| FineWood | 10 |
| BronzeNails | 16 |
| Tin | 2 |
Prefab:
BuilderWorkstationBundle_balRecipe:
| Resource | Amount |
|---|---|
| Bronze | 6 |
| FineWood | 20 |
| Flint | 10 |
| Iron | 6 |
Prefab:
UncharedThunderstone_balOutput amount:
Recipe:
| Resource | Amount |
|---|---|
| Flint | 6 |
| HardAntler | 1 |
| Crystal | 3 |
Prefab:
WagonBundleCargo_balRecipe:
| Resource | Amount |
|---|---|
| WagonPartsBundle_bal | 1 |
| FineWood | 10 |
Prefab:
WagonBundleTable_balRecipe:
| Resource | Amount |
|---|---|
| WagonPartsBundle_bal | 1 |
| BuilderWorkstationBundle_bal | 1 |
| Crystal | 4 |
Prefab:
WagonBundlePower_balRecipe:
| Resource | Amount |
|---|---|
| WagonPartsBundle_bal | 1 |
| SurtlingCore | 2 |
| Thunderstone | 1 |
Prefab:
WagonBundlePersonel_balRecipe:
| Resource | Amount |
|---|---|
| WagonPartsBundle_bal | 1 |
| Wood | 5 |
Build Cost:
| Resource | Amount |
|---|---|
| WagonBundlePower_bal | 1 |
Build Cost:
| Resource | Amount |
|---|---|
| WagonBundleCargo_bal | 1 |
Build Cost:
| Resource | Amount |
|---|---|
| WagonBundleTable_bal | 1 |
Build Cost:
| Resource | Amount |
|---|---|
| WagonBundlePersonel_bal | 1 |
| Prefab | Build Cost |
|---|---|
railtrack1m_bal |
1 RailPartsBundle_bal |
railtrack_bal |
2 RailPartsBundle_bal |
railtrack4m_bal |
3 RailPartsBundle_bal |
railtrack8m_bal |
4 RailPartsBundle_bal |
| Prefab | Build Cost |
|---|---|
railtrackRamp26short_bal |
1 RailPartsBundle_bal |
railtrackRamp45short_bal |
1 RailPartsBundle_bal |
railtrackRamp_bal |
2 RailPartsBundle_bal |
railtrackRamp45_bal |
2 RailPartsBundle_bal |
railtrackRamp64_bal |
2 RailPartsBundle_bal |
| Prefab | Build Cost |
|---|---|
railtrackTurnLeft15_bal |
2 RailPartsBundle_bal |
railtrackTurnLeft30_bal |
2 RailPartsBundle_bal |
railtrackTurnLeft45_bal |
2 RailPartsBundle_bal |
railtrackTurnRight15_bal |
2 RailPartsBundle_bal |
railtrackTurnRight30_bal |
2 RailPartsBundle_bal |
railtrackTurnRight45_bal |
2 RailPartsBundle_bal |
| Prefab | Build Cost |
|---|---|
railtrackSwitchLeft_bal |
3 RailPartsBundle_bal, 1 Crystal |
railtrackSwitchMid_bal |
3 RailPartsBundle_bal, 1 Crystal |
railtrackSwitchRight_bal |
3 RailPartsBundle_bal, 1 Crystal |
| Prefab | Build Cost |
|---|---|
railtrackCross_bal |
2 RailPartsBundle_bal |
railtrackControl_bal |
2 RailPartsBundle_bal, 1 Thunderstone, 1 Crystal |
railtrackStop_bal |
1 RailPartsBundle_bal, 2 Wood |
railtrackSignalStopReceiver_bal |
2 RailPartsBundle_bal, 1 Crystal |
railtrackContainer_bal |
2 RailPartsBundle_bal, 1 Thunderstone, 4 Iron, 20 FineWood |
railtrackUnload_bal |
2 RailPartsBundle_bal, 2 Iron, 1 SurtlingCore, 5 FineWood |
railtrackSpeed_bal |
3 RailPartsBundle_bal, 1 Thunderstone |
railtrackJump4m_bal |
2 RailPartsBundle_bal, 1 SurtlingCore |
railtrackJump6m_bal |
3 RailPartsBundle_bal, 1 SurtlingCore |
railtrackJump8m_bal |
4 RailPartsBundle_bal, 1 SurtlingCore |
railtrackDrop8m_bal |
4 RailPartsBundle_bal, 1 SurtlingCore |
railtrackDrawbridge10m_bal |
8 RailPartsBundle_bal, 1 Thunderstone, 4 Iron, 20 FineWood |
A signal network consists of:
Receivers react only to emitters using the same Signal Name.
Most receivers follow the same interaction scheme.
How long the receiver waits after receiving a signal before executing its Event State.
Example:
Delay = 3 seconds
Signal arrives β wait 3 seconds β execute Event State
How long the receiver keeps the Event State after the signal disappears.
Example:
Signal lost β keep Event State for configured duration β return to Default State
Duration = 0 means the Event State only exists while the signal is present.
Prefab:
pressenceSignalEmitter_balBuild Cost:
| Resource | Amount |
|---|---|
| RailPartsBundle_bal | 1 |
| Thunderstone | 1 |
| Crystal | 1 |
Supports:
Events:
Shapes:
Prefab:
daycycleSignalEmitter_balBuild Cost:
| Resource | Amount |
|---|---|
| RailPartsBundle_bal | 1 |
| Thunderstone | 1 |
| Crystal | 1 |
Modes:
Prefab:
railtrackSignalEmitter_balBuild Cost:
| Resource | Amount |
|---|---|
| RailPartsBundle_bal | 1 |
| Thunderstone | 1 |
| Crystal | 1 |
Events:
Prefab:
railSignalDoor_balBuild Cost:
| Resource | Amount |
|---|---|
| RailPartsBundle_bal | 5 |
| Crystal | 2 |
Prefab:
railSignalLiftGate_balBuild Cost:
| Resource | Amount |
|---|---|
| RailPartsBundle_bal | 7 |
| Crystal | 2 |
| RoundLog | 10 |
Prefab:
railtrackLampReciver_balBuild Cost:
| Resource | Amount |
|---|---|
| RailPartsBundle_bal | 2 |
| Tin | 3 |
| Crystal | 2 |
Prefab:
railtrackSpeakerReciver_balBuild Cost:
| Resource | Amount |
|---|---|
| RailPartsBundle_bal | 2 |
| Tin | 3 |
| Crystal | 2 |
Prefab:
railtrackSignalStopReceiver_balBuild Cost:
| Resource | Amount |
|---|---|
| RailPartsBundle_bal | 2 |
| Crystal | 1 |
| Prefab | Build Cost |
|---|---|
railtrackSwitchLeft_bal |
3 RailPartsBundle_bal, 1 Crystal |
railtrackSwitchMid_bal |
3 RailPartsBundle_bal, 1 Crystal |
railtrackSwitchRight_bal |
3 RailPartsBundle_bal, 1 Crystal |
Prefab:
railtrackDrawbridge10m_balBuild Cost:
| Resource | Amount |
|---|---|
| RailPartsBundle_bal | 8 |
| Thunderstone | 1 |
| Iron | 4 |
| FineWood | 20 |
Prefab:
railtrackSpeed_balBuild Cost:
| Resource | Amount |
|---|---|
| RailPartsBundle_bal | 3 |
| Thunderstone | 1 |
Modes:
Speed Rails can operate as standard interactive rails or as signal receivers.
Speed Rails support two modes:
Applies a strong acceleration impulse to passing trains.
Applies a braking impulse to passing trains.
Visual state changes based on the currently selected mode.
Cargo Automation allows trains to automatically move items between wagons, containers and unloading stations.
Both Container Rails and Unload Rails support advanced filtering, train stop control and automated transfer operations.
Prefab:
railtrackContainer_balContainer Rails can operate in three modes:
| Mode | Description |
|---|---|
| Disabled | Rail is inactive and performs no transfer operations. |
| Load | Pulls items from a nearby container into train cargo wagons. |
| Unload | Moves items from train cargo wagons into a nearby container. |
During transfer operations the target container becomes temporarily locked to prevent players from modifying its contents while the transfer is in progress.
When a container is locked:
Prefab:
railtrackUnload_balUnload Rails transfer items from cargo wagons directly into the world as dropped items.
Unload Rails can operate in two modes:
| Mode | Description |
|---|---|
| Disabled | Rail is inactive. |
| Enabled | Rail unloads matching items from cargo wagons. |
Both Container Rails and Unload Rails support item filtering.
Transfers every supported item.
Building and crafting materials.
Examples:
Items that can be consumed by the player.
Examples:
Ranged weapon ammunition.
Examples:
Combat weapons.
Examples:
Wearable armor pieces.
Examples:
Any item that can be equipped.
Includes:
Items that cannot be equipped.
Includes:
Miscellaneous items.
Examples:
Filters a single specific item.
A Unique Item filter is configured by using the desired item directly on the rail.
The item is NOT consumed.
The rail stores the selected item's prefab identifier and uses it for future filtering operations.
Hover text displays the localized in-game item name for easier identification.
Example:
Filter: Unique Item (Iron)
Only Iron will be transferred.
Container Rails and Unload Rails support automatic train stopping.
| Mode | Description |
|---|---|
| None | No stop requested. |
| Both | Stop train from either direction. |
| Side A | Stop trains approaching from Side A. |
| Side B | Stop trains approaching from Side B. |
Stop Duration determines how long a train remains stopped while transfer operations are performed.
Minimum value:
3 seconds
The duration cannot be reduced below 3 seconds.
This guarantees enough time for transfer operations to complete safely.
Higher values may be used for large cargo operations or heavily loaded trains.
The following systems are synchronized:
Synchronization uses:
No.
Yes.
Yes.
Yes.
Yes.
Rune Rails contains a built-in debug helper:
BalrondRuneRails.debugvariabelcall();
This helper prints:
Useful for:
| Field | ZDO Key | Stable Hash |
|---|---|---|
| RailId | hl_rail_id | 1934816099 |
| RailType | hl_rail_type | 1998845808 |
| RailIsPlatform | hl_is_platform | 507312349 |
| NeighborA | hl_neighbor_a | 1709629103 |
| NeighborB | hl_neighbor_b | 1709629104 |
| NeighborC | hl_neighbor_c | 1709629105 |
| NeighborD | hl_neighbor_d | 1709629106 |
| RailForcedStop | hl_rail_forced_stop | 59748338 |
| RailSwitchDirection | hl_rail_switch_direction | -763416782 |
| RailStopMode | hl_rail_stop_mode | -1779730730 |
| StopTimerSeconds | hl_stop_timer_seconds | -938800861 |
| StopTimerEndTime | hl_stop_timer_end_time | 1877591417 |
| RailSpeedDefaultMode | hl_rail_speed_default_mode | 1575759369 |
| RailSpeedCurrentMode | hl_rail_speed_current_mode | -1939458101 |
| Halting | hl_halting | -1247811048 |
| CartId | hl_cart_id | -765978659 |
| CartType | hl_cart_type | -414559190 |
| FrontCartId | hl_front_cart_id | -1322036093 |
| BackCartId | hl_back_cart_id | -738044215 |
| CurrentRailId | hl_current_rail_id | 1311665293 |
| DistanceOnRail | hl_distance_on_rail | -1139094329 |
| ReversedOnRail | hl_reversed_on_rail | -1544419608 |
| TravelReversedOnRail | hl_travel_reversed_on_rail | 896595807 |
| Running | hl_running | 48829582 |
| ActiveEngineId | hl_active_engine_id | 460719104 |
| FuelAmount | hl_fuel_amount | 1435072936 |
| LastDriverId | hl_last_driver_id | 622145058 |
| RailUnloadEnabled | hl_rail_unload_enabled | 2112945573 |
| RailUnloadFilter | hl_rail_unload_filter | -2093381670 |
| RailUnloadShowFilterIcon | hl_rail_unload_show_filter_icon | 1489979460 |
| SignalSwitchDefaultDirection | hl_signal_switch_default_direction | 308030428 |
| SignalSwitchEventDirection | hl_signal_switch_event_direction | 1640428373 |
| SignalEmitterActive | hl_signal_emitter_active | 1078821723 |
| SignalName | hl_signal_name | -980804387 |
| SignalEmitterMode | hl_signal_emitter_mode | -80602132 |
| SignalEmitterRange | hl_signal_emitter_range | -207671832 |
| SignalDefaultState | hl_signal_default_state | 878506097 |
| SignalEventState | hl_signal_event_state | 1730005294 |
| SignalEventDuration | hl_signal_event_duration | 1050461299 |
| SignalDoorEventState | hl_signal_door_event_state | -754268517 |
| SignalReceiverActive | hl_signal_receiver_active | 1833858728 |
| RailContainerTransferMode | hl_rail_container_transfer_mode | 2102940621 |
| RailContainerTransferEnabled | hl_rail_container_transfer_enabled | -1167035585 |
| RailContainerTransferFilter | hl_rail_container_transfer_filter | -1343447162 |
| RailDrawbridgeState | hl_rail_drawbridge_state | -1955429243 |
| RailDrawbridgeAnimStartTime | hl_rail_drawbridge_anim_start_time | 229130226 |
| PresenceSignalActive | hl_presence_signal_active | 441293886 |
| PresenceSignalName | hl_presence_signal_name | -364472905 |
| PresenceSignalTarget | hl_presence_signal_target | 1743780257 |
| PresenceSignalShape | hl_presence_signal_shape | -1205593401 |
| PresenceSignalEvent | hl_presence_signal_event | 18262636 |
| PresenceSignalRange | hl_presence_signal_range | 1503345287 |
| Name | Value |
|---|---|
| None | 0 |
| Both | 1 |
| SideA | 2 |
| SideB | 3 |
| Name | Value |
|---|---|
| Off | 0 |
| FirstPerson | 1 |
| ShoulderRight | 2 |
| ShoulderLeft | 3 |
| CloseFollow | 4 |
| Name | Value |
|---|---|
| Platform | 0 |
| Straight | 1 |
| Slope26 | 2 |
| Slope45 | 3 |
| Turn45 | 4 |
| Turn90 | 5 |
| Crossroad | 6 |
| Control | 7 |
| Turn15 | 8 |
| Turn30 | 9 |
| Jump | 10 |
| Slope64 | 11 |
| Speed | 12 |
| Drawbridge | 13 |
| Name | Value |
|---|---|
| Left | 0 |
| Right | 1 |
| Name | Value |
|---|---|
| Powered | 0 |
| Cargo | 1 |
| Utility | 2 |
| Passenger | 3 |
| Name | Value |
|---|---|
| TrainOnSensor | 0 |
| TrainEntered | 1 |
| TrainExited | 2 |
| TrainStopped | 3 |
| TrainMoving | 4 |
| Name | Value |
|---|---|
| Closed | 0 |
| Open | 1 |
| Name | Value |
|---|---|
| Lowered | 0 |
| Raising | 1 |
| Raised | 2 |
| Lowering | 3 |
| Name | Value |
|---|---|
| Players | 0 |
| Monsters | 1 |
| Tamed | 2 |
| Everything | 3 |
| Name | Value |
|---|---|
| Zone | 0 |
| Directional | 1 |
| Name | Value |
|---|---|
| Present | 0 |
| Entered | 1 |
| Exited | 2 |
| Stopped | 3 |
| Moving | 4 |
| Name | Value |
|---|---|
| Lowered | 0 |
| Raised | 1 |
| Name | Value |
|---|---|
| Day | 0 |
| Night | 1 |
| Daylight | 2 |
| Name | Value |
|---|---|
| Boost | 0 |
| Slow | 1 |
Discord: https://discord.gg/Jfp8T5N7Pv