Richie's Workshop
DayZ mods

Immersive Hunting

Learn how to use hunting bait and tune animal encounters on your server.

Immersive Hunting

Immersive Hunting lets players place bait and wait for animals to appear nearby. As a server owner, you choose the animals each bait attracts, how often encounters happen, and how many animals can spawn.

View on Steam Workshop

Set up the mod

Follow the DayZ installation guide, then start your server once to generate the configuration. Stop the server before editing it, and restart after saving your changes.

The generated file includes all five bait profiles. Start with those defaults, test a bait in-game, then adjust its settings to suit your server. The file path and setting reference are below.

Use bait in-game

  1. Place a bait can on the ground.
  2. Look at it and select Activate Hunting Bait.
  3. Move to your hunting position and wait for encounters.
  4. Select Inspect Hunting Bait to check the remaining time and number of animals attracted.

Put the bait on the ground before activating it, and make sure it isn't ruined. Activating it replaces the can with active bait.

Animals won't appear immediately. After the first delay, the bait checks for an encounter at regular intervals. Each check has its own chance of succeeding, so an unsuccessful check is normal.

Bait stops working when its time runs out or it reaches its total animal limit. Use Inspect Hunting Bait to check its progress.

Choose your bait

BaitItem ClassnameDefault Animals
Fruit BaitIH_FruitBaitCanRoe deer, red deer, wild boar, pigs, and hares
Grain BaitIH_GrainBaitCanChickens, goats, sheep, and cattle
Carrion BaitIH_CarrionBaitCanWolves, foxes, bears, and wild boar
Fish Chum BaitIH_FishChumBaitCanFoxes, wolves, bears, and wild boar
Mineral BaitIH_MineralBaitCanRoe deer, red deer, goats, sheep, cattle, and wild boar

Fish Chum creates land-animal encounters. It does not spawn fish.

What to expect with the default settings

BaitSpawn DistanceDurationFirst CheckCheck IntervalSpawn ChanceTotal Animal Limit
Fruit90–350 m30 min120 sec60 sec22%3
Grain75–260 m25 min90 sec60 sec20%3
Carrion130–500 m20 min150 sec75 sec20%2
Fish Chum120–420 m22 min120 sec75 sec18%2
Mineral100–375 m45 min180 sec75 sec16%4

Spawn distance applies to the initial group position. Additional group members are placed around that position.

Find and edit your configuration

$profile:ImmersiveHunting/config.json

The server generates the configuration on first startup.

Stop the server before editing the file, save your changes, and restart to apply them.

When the server loads the file, it checks and saves the configuration again. It may remove invalid entries or adjust values outside the allowed range. If it can't read the file, it uses the defaults instead. Keep a backup before editing so you can compare changes.

Check the logs

0 Off · 1 Error · 2 Warning · 3 Info · 4 Debug

Default: 3

$profile:ImmersiveHunting/Logs/

EnableFileLogging controls writing log messages to files.

EnableAnimalSpawnLogging controls detailed individual spawn messages. These messages require LoggingLevel to be 3 or higher.

Configuration example

This example shows the server-wide settings and one simplified Fruit Bait profile. Use it alongside your generated file to understand the fields.

Keep the other bait profiles in your generated Baits array. Replacing the full file with this shortened example would leave you with only the Fruit Bait profile.

View the full configuration example
{
    "ConfigVersion": 1,                                  // Config version. Do not change.
    "LoggingLevel": 3,                                   // 0=Off, 1=Errors, 2=Warnings, 3=Info, 4=Debug.
    "EnableFileLogging": true,                           // Enables per-restart log files.
    "EnableBaitActivationNotifications": true,           // Notifies a player when their bait activates.
    "EnableBaitExpirationNotifications": true,           // Notifies the owner when their bait expires.
    "EnableAnimalSpawnLogging": true,                    // Logs every animal spawned by the mod.
    "NotificationDurationSeconds": 6.0,                  // Notification display duration in seconds.
    "PlayerNoSpawnRadius": 70.0,                         // Animals cannot spawn this close to any player. 0 disables.
    "MinimumActiveBaitDistance": 75.0,                   // Required distance between active baits. 0 disables.
    "EnableSpawnPositionValidation": true,               // Enables terrain, water, slope, and obstruction checks.
    "SpawnPositionAttempts": 20,                         // Maximum positions tested during a spawn attempt.
    "MaxSpawnSlopeDegrees": 35.0,                        // Maximum allowed terrain slope.
    "MaxSpawnWaterDepth": 0.15,                          // Maximum allowed water depth in meters.
    "SpawnClearanceRadius": 2.5,                         // Horizontal obstruction-check radius.
    "SpawnClearanceHeight": 2.5,                         // Vertical obstruction-check height.
    "DefaultSpawnedAnimalLifetimeMinutes": 30.0,         // Default spawned-animal lifetime. 0 disables timed cleanup.
    "AnimalCleanupCheckIntervalSeconds": 30.0,           // How often expired animals are checked.
    "AnimalCleanupPlayerRadius": 100.0,                  // Nearby-player radius used by deferred cleanup.
    "DeferAnimalCleanupNearPlayers": true,               // Delays cleanup while players are nearby.
    "RequireSpawnableAnimalScope": true,                 // Rejects animal classes with a config scope below 2.
    "MaxActiveBaitsGlobal": 80,                          // Server-wide active bait limit. 0 means unlimited.
    "MaxActiveBaitsPerPlayer": 3,                        // Active bait limit per player. 0 means unlimited.
    "Baits": [
        {
            "BaitClass": "IH_FruitBaitCan",              // Item classname used before activation.
            "ActiveClass": "IH_ActiveFruitBait",         // Object classname created after activation.
            "Radius": 350.0,                             // Maximum animal spawn distance from the bait.
            "MinSpawnDistance": 90.0,                    // Minimum animal spawn distance from the bait.
            "DurationMinutes": 30.0,                     // How long the bait remains active.
            "FirstSpawnDelaySeconds": 120.0,             // Delay before the first spawn check.
            "CheckIntervalSeconds": 60.0,                // Delay between later spawn checks.
            "SpawnChance": 0.22,                         // Chance per check from 0.0 to 1.0.
            "MaxAnimals": 3,                             // Total animals this bait can spawn. 0 means unlimited.
            "MaxAnimalsPerTick": 3,                      // Maximum animals spawned during one check.
            "GroupSpreadRadius": 12.0,                   // Spawn spread for members of the same group.
            "DeleteWhenExpired": true,                   // Deletes the active can after expiration.
            "MatchInheritedBaitClasses": false,          // Allows inherited versions of BaitClass when enabled.
            "Animals": [
                {
                    "ClassName": "Animal_CapreolusCapreolus", // Animal classname.
                    "Weight": 3.0,                            // Relative selection weight within this animal list.
                    "MinGroupSize": 1,                        // Minimum number spawned when selected.
                    "MaxGroupSize": 2,                        // Maximum number spawned when selected.
                    "LifetimeMinutes": 0.0                    // 0=global lifetime, positive=override, -1=no timed cleanup.
                },
                {
                    "ClassName": "Animal_CapreolusCapreolusF",
                    "Weight": 3.0,
                    "MinGroupSize": 1,
                    "MaxGroupSize": 2,
                    "LifetimeMinutes": 0.0
                },
                {
                    "ClassName": "Animal_CervusElaphus",
                    "Weight": 2.0,
                    "MinGroupSize": 2,
                    "MaxGroupSize": 3,
                    "LifetimeMinutes": 0.0
                },
                {
                    "ClassName": "Animal_CervusElaphusF",
                    "Weight": 2.0,
                    "MinGroupSize": 2,
                    "MaxGroupSize": 4,
                    "LifetimeMinutes": 0.0
                },
                {
                    "ClassName": "Animal_SusScrofa",
                    "Weight": 2.0,
                    "MinGroupSize": 1,
                    "MaxGroupSize": 3,
                    "LifetimeMinutes": 0.0
                },
                {
                    "ClassName": "Animal_SusDomesticus",
                    "Weight": 1.0,
                    "MinGroupSize": 1,
                    "MaxGroupSize": 2,
                    "LifetimeMinutes": 0.0
                },
                {
                    "ClassName": "Animal_LepusEuropaeus",
                    "Weight": 2.0,
                    "MinGroupSize": 1,
                    "MaxGroupSize": 1,
                    "LifetimeMinutes": 0.0
                }
            ]
        },
        {
            "BaitClass": "IH_GrainBaitCan",
            "ActiveClass": "IH_ActiveGrainBait",
            "Radius": 260.0,
            "MinSpawnDistance": 75.0,
            "DurationMinutes": 25.0,
            "FirstSpawnDelaySeconds": 90.0,
            "CheckIntervalSeconds": 60.0,
            "SpawnChance": 0.2,
            "MaxAnimals": 3,
            "MaxAnimalsPerTick": 3,
            "GroupSpreadRadius": 12.0,
            "DeleteWhenExpired": true,
            "MatchInheritedBaitClasses": false,
            "Animals": [
                {
                    "ClassName": "Animal_GallusGallusDomesticus",
                    "Weight": 4.0,
                    "MinGroupSize": 2,
                    "MaxGroupSize": 4,
                    "LifetimeMinutes": 0.0
                },
                {
                    "ClassName": "Animal_CapraHircus_Brown",
                    "Weight": 2.0,
                    "MinGroupSize": 2,
                    "MaxGroupSize": 4,
                    "LifetimeMinutes": 0.0
                },
                {
                    "ClassName": "Animal_CapraHircusF",
                    "Weight": 2.0,
                    "MinGroupSize": 2,
                    "MaxGroupSize": 4,
                    "LifetimeMinutes": 0.0
                },
                {
                    "ClassName": "Animal_OvisAries",
                    "Weight": 2.0,
                    "MinGroupSize": 2,
                    "MaxGroupSize": 4,
                    "LifetimeMinutes": 0.0
                },
                {
                    "ClassName": "Animal_OvisAriesF",
                    "Weight": 2.0,
                    "MinGroupSize": 2,
                    "MaxGroupSize": 4,
                    "LifetimeMinutes": 0.0
                },
                {
                    "ClassName": "Animal_BosTaurus_Brown",
                    "Weight": 1.0,
                    "MinGroupSize": 2,
                    "MaxGroupSize": 3,
                    "LifetimeMinutes": 0.0
                },
                {
                    "ClassName": "Animal_BosTaurusF_Brown",
                    "Weight": 1.0,
                    "MinGroupSize": 2,
                    "MaxGroupSize": 3,
                    "LifetimeMinutes": 0.0
                }
            ]
        },
        {
            "BaitClass": "IH_CarrionBaitCan",
            "ActiveClass": "IH_ActiveCarrionBait",
            "Radius": 500.0,
            "MinSpawnDistance": 130.0,
            "DurationMinutes": 20.0,
            "FirstSpawnDelaySeconds": 150.0,
            "CheckIntervalSeconds": 75.0,
            "SpawnChance": 0.2,
            "MaxAnimals": 2,
            "MaxAnimalsPerTick": 3,
            "GroupSpreadRadius": 12.0,
            "DeleteWhenExpired": true,
            "MatchInheritedBaitClasses": false,
            "Animals": [
                {
                    "ClassName": "Animal_CanisLupus_Grey",
                    "Weight": 3.0,
                    "MinGroupSize": 2,
                    "MaxGroupSize": 4,
                    "LifetimeMinutes": 0.0
                },
                {
                    "ClassName": "Animal_CanisLupus_White",
                    "Weight": 1.0,
                    "MinGroupSize": 2,
                    "MaxGroupSize": 4,
                    "LifetimeMinutes": 0.0
                },
                {
                    "ClassName": "Animal_VulpesVulpes",
                    "Weight": 2.0,
                    "MinGroupSize": 1,
                    "MaxGroupSize": 1,
                    "LifetimeMinutes": 0.0
                },
                {
                    "ClassName": "Animal_UrsusArctos",
                    "Weight": 0.7,
                    "MinGroupSize": 1,
                    "MaxGroupSize": 1,
                    "LifetimeMinutes": 0.0
                },
                {
                    "ClassName": "Animal_SusScrofa",
                    "Weight": 0.75,
                    "MinGroupSize": 1,
                    "MaxGroupSize": 2,
                    "LifetimeMinutes": 0.0
                }
            ]
        },
        {
            "BaitClass": "IH_FishChumBaitCan",
            "ActiveClass": "IH_ActiveFishChumBait",
            "Radius": 420.0,
            "MinSpawnDistance": 120.0,
            "DurationMinutes": 22.0,
            "FirstSpawnDelaySeconds": 120.0,
            "CheckIntervalSeconds": 75.0,
            "SpawnChance": 0.18,
            "MaxAnimals": 2,
            "MaxAnimalsPerTick": 3,
            "GroupSpreadRadius": 12.0,
            "DeleteWhenExpired": true,
            "MatchInheritedBaitClasses": false,
            "Animals": [
                {
                    "ClassName": "Animal_VulpesVulpes",
                    "Weight": 3.0,
                    "MinGroupSize": 1,
                    "MaxGroupSize": 1,
                    "LifetimeMinutes": 0.0
                },
                {
                    "ClassName": "Animal_CanisLupus_Grey",
                    "Weight": 1.5,
                    "MinGroupSize": 2,
                    "MaxGroupSize": 4,
                    "LifetimeMinutes": 0.0
                },
                {
                    "ClassName": "Animal_CanisLupus_White",
                    "Weight": 0.5,
                    "MinGroupSize": 2,
                    "MaxGroupSize": 4,
                    "LifetimeMinutes": 0.0
                },
                {
                    "ClassName": "Animal_UrsusArctos",
                    "Weight": 0.5,
                    "MinGroupSize": 1,
                    "MaxGroupSize": 1,
                    "LifetimeMinutes": 0.0
                },
                {
                    "ClassName": "Animal_SusScrofa",
                    "Weight": 0.5,
                    "MinGroupSize": 1,
                    "MaxGroupSize": 2,
                    "LifetimeMinutes": 0.0
                }
            ]
        },
        {
            "BaitClass": "IH_MineralBaitCan",
            "ActiveClass": "IH_ActiveMineralBait",
            "Radius": 375.0,
            "MinSpawnDistance": 100.0,
            "DurationMinutes": 45.0,
            "FirstSpawnDelaySeconds": 180.0,
            "CheckIntervalSeconds": 75.0,
            "SpawnChance": 0.16,
            "MaxAnimals": 4,
            "MaxAnimalsPerTick": 3,
            "GroupSpreadRadius": 12.0,
            "DeleteWhenExpired": true,
            "MatchInheritedBaitClasses": false,
            "Animals": [
                {
                    "ClassName": "Animal_CapreolusCapreolus",
                    "Weight": 3.0,
                    "MinGroupSize": 1,
                    "MaxGroupSize": 2,
                    "LifetimeMinutes": 0.0
                },
                {
                    "ClassName": "Animal_CapreolusCapreolusF",
                    "Weight": 3.0,
                    "MinGroupSize": 1,
                    "MaxGroupSize": 2,
                    "LifetimeMinutes": 0.0
                },
                {
                    "ClassName": "Animal_CervusElaphus",
                    "Weight": 2.0,
                    "MinGroupSize": 2,
                    "MaxGroupSize": 3,
                    "LifetimeMinutes": 0.0
                },
                {
                    "ClassName": "Animal_CervusElaphusF",
                    "Weight": 2.0,
                    "MinGroupSize": 2,
                    "MaxGroupSize": 4,
                    "LifetimeMinutes": 0.0
                },
                {
                    "ClassName": "Animal_CapraHircus_Brown",
                    "Weight": 1.0,
                    "MinGroupSize": 2,
                    "MaxGroupSize": 4,
                    "LifetimeMinutes": 0.0
                },
                {
                    "ClassName": "Animal_CapraHircusF",
                    "Weight": 1.0,
                    "MinGroupSize": 2,
                    "MaxGroupSize": 4,
                    "LifetimeMinutes": 0.0
                },
                {
                    "ClassName": "Animal_OvisAries",
                    "Weight": 1.0,
                    "MinGroupSize": 2,
                    "MaxGroupSize": 4,
                    "LifetimeMinutes": 0.0
                },
                {
                    "ClassName": "Animal_OvisAriesF",
                    "Weight": 1.0,
                    "MinGroupSize": 2,
                    "MaxGroupSize": 4,
                    "LifetimeMinutes": 0.0
                },
                {
                    "ClassName": "Animal_BosTaurus_Brown",
                    "Weight": 0.5,
                    "MinGroupSize": 2,
                    "MaxGroupSize": 3,
                    "LifetimeMinutes": 0.0
                },
                {
                    "ClassName": "Animal_BosTaurusF_Brown",
                    "Weight": 0.5,
                    "MinGroupSize": 2,
                    "MaxGroupSize": 3,
                    "LifetimeMinutes": 0.0
                },
                {
                    "ClassName": "Animal_SusScrofa",
                    "Weight": 0.75,
                    "MinGroupSize": 1,
                    "MaxGroupSize": 2,
                    "LifetimeMinutes": 0.0
                }
            ]
        }
    ]
}

Server-wide settings

SettingDescription
ConfigVersionConfiguration version. Leave at 1.
PlayerNoSpawnRadiusMinimum distance in meters between animal spawn positions and any player. 0 disables this check.
MinimumActiveBaitDistanceMinimum horizontal distance in meters between active baits. 0 disables this restriction.
MaxActiveBaitsGlobalMaximum active baits across the server. 0 removes this limit.
MaxActiveBaitsPerPlayerMaximum active baits owned by one player. 0 removes this limit.
EnableBaitActivationNotificationsShows a notification when bait is activated.
EnableBaitExpirationNotificationsNotifies the online owner when bait expires or reaches its animal limit.
NotificationDurationSecondsDuration of bait notifications in seconds.
RequireSpawnableAnimalScopeRequires animal classes to have a spawnable config scope of 2 or higher.

Finding a suitable spawn position

SettingDescription
EnableSpawnPositionValidationEnables terrain, water-depth, and obstacle checks. Player-distance checks are separate.
SpawnPositionAttemptsAttempts to find a suitable initial spawn position per encounter.
MaxSpawnSlopeDegreesMaximum permitted terrain slope.
MaxSpawnWaterDepthMaximum permitted water depth in meters.
SpawnClearanceRadiusHalf-width of the obstacle-check area around a spawn position.
SpawnClearanceHeightHeight of the obstacle-check area.

These checks help the mod find a suitable place for animals. If it can't find enough valid positions, an encounter can produce fewer animals than requested—or none.

Settings for each bait

SettingDescription
BaitClassClassname of the inactive bait item.
ActiveClassClassname created when bait is activated.
RadiusMaximum distance in meters for the initial spawn position.
MinSpawnDistanceMinimum distance in meters for the initial spawn position.
DurationMinutesMaximum active duration of the bait.
FirstSpawnDelaySecondsDelay before the first spawn check.
CheckIntervalSecondsTime between subsequent spawn checks.
SpawnChanceChance per check from 0.0 to 1.0. 0.22 means 22%.
MaxAnimalsTotal animals the bait can spawn over its lifetime. 0 removes this cap.
MaxAnimalsPerTickMaximum animals spawned during one successful check.
GroupSpreadRadiusPlacement radius in meters for additional group members.
DeleteWhenExpiredDeletes the bait object when it expires.
MatchInheritedBaitClassesAllows the profile to match bait items derived from BaitClass.
AnimalsAnimal entries available to this bait.

MaxAnimals counts every animal that bait has spawned, even if those animals have since been killed or removed. For example, a cap of 3 allows three animals over the bait's whole lifetime.

Set SpawnChance to 0.0 to stop a particular bait profile from spawning animals. This version has no global enable/disable setting.

Choosing animals and group sizes

SettingDescription
ClassNameAnimal classname. Must exist in the loaded game configuration and inherit from AnimalBase.
WeightRelative selection chance. A weight of 3 is three times as likely as a weight of 1.
MinGroupSizeMinimum requested group size.
MaxGroupSizeMaximum requested group size.
LifetimeMinutes0 uses the global default, a positive value sets a custom lifetime, and -1 disables the mod's timed cleanup for this entry.

Each successful check selects one animal entry. All members of that encounter use the selected classname.

Group sizes are also limited by MaxAnimalsPerTick, the bait's remaining animal allowance, and available spawn positions.

Animal cleanup

SettingDescription
DefaultSpawnedAnimalLifetimeMinutesDefault timed-cleanup lifetime. 0 disables timed cleanup for animals using this default.
AnimalCleanupCheckIntervalSecondsInterval between cleanup checks.
AnimalCleanupPlayerRadiusDistance used to check for players near animals due for cleanup.
DeferAnimalCleanupNearPlayersEnables the nearby-player check when an animal reaches its cleanup time.

Bait duration and animal lifetime are separate settings. When bait expires, it stops creating encounters. Animals it has already spawned stay until their own cleanup rules apply.

If something isn't working

The bait won't activate

Check that the bait is on the ground and isn't ruined. Then check the active-bait limits for the player and server, and the minimum distance between active baits.

No animals have appeared

Wait for the first spawn delay. Each later check still has a chance to fail. Check the bait's remaining time and animal allowance, then review its spawn chance, animal class names, and spawn-position settings. Nearby players, terrain, water, or obstacles may rule out otherwise suitable positions.

A group is smaller than expected

Group size is limited by MaxAnimalsPerTick, the bait's remaining lifetime allowance, and the positions available. A requested group size doesn't guarantee that many animals will appear.

Logs don't show individual animal spawns

Enable EnableAnimalSpawnLogging and set LoggingLevel to 3 or higher. Enable EnableFileLogging if you want the output written to files.

Need help reading a log or checking your settings? Ask in the Workshop Discord.

On this page