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

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.
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
- Place a bait can on the ground.
- Look at it and select Activate Hunting Bait.
- Move to your hunting position and wait for encounters.
- 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
| Bait | Item Classname | Default Animals |
|---|---|---|
| Fruit Bait | IH_FruitBaitCan | Roe deer, red deer, wild boar, pigs, and hares |
| Grain Bait | IH_GrainBaitCan | Chickens, goats, sheep, and cattle |
| Carrion Bait | IH_CarrionBaitCan | Wolves, foxes, bears, and wild boar |
| Fish Chum Bait | IH_FishChumBaitCan | Foxes, wolves, bears, and wild boar |
| Mineral Bait | IH_MineralBaitCan | Roe 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
| Bait | Spawn Distance | Duration | First Check | Check Interval | Spawn Chance | Total Animal Limit |
|---|---|---|---|---|---|---|
| Fruit | 90–350 m | 30 min | 120 sec | 60 sec | 22% | 3 |
| Grain | 75–260 m | 25 min | 90 sec | 60 sec | 20% | 3 |
| Carrion | 130–500 m | 20 min | 150 sec | 75 sec | 20% | 2 |
| Fish Chum | 120–420 m | 22 min | 120 sec | 75 sec | 18% | 2 |
| Mineral | 100–375 m | 45 min | 180 sec | 75 sec | 16% | 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.jsonThe 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
| Setting | Description |
|---|---|
ConfigVersion | Configuration version. Leave at 1. |
PlayerNoSpawnRadius | Minimum distance in meters between animal spawn positions and any player. 0 disables this check. |
MinimumActiveBaitDistance | Minimum horizontal distance in meters between active baits. 0 disables this restriction. |
MaxActiveBaitsGlobal | Maximum active baits across the server. 0 removes this limit. |
MaxActiveBaitsPerPlayer | Maximum active baits owned by one player. 0 removes this limit. |
EnableBaitActivationNotifications | Shows a notification when bait is activated. |
EnableBaitExpirationNotifications | Notifies the online owner when bait expires or reaches its animal limit. |
NotificationDurationSeconds | Duration of bait notifications in seconds. |
RequireSpawnableAnimalScope | Requires animal classes to have a spawnable config scope of 2 or higher. |
Finding a suitable spawn position
| Setting | Description |
|---|---|
EnableSpawnPositionValidation | Enables terrain, water-depth, and obstacle checks. Player-distance checks are separate. |
SpawnPositionAttempts | Attempts to find a suitable initial spawn position per encounter. |
MaxSpawnSlopeDegrees | Maximum permitted terrain slope. |
MaxSpawnWaterDepth | Maximum permitted water depth in meters. |
SpawnClearanceRadius | Half-width of the obstacle-check area around a spawn position. |
SpawnClearanceHeight | Height 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
| Setting | Description |
|---|---|
BaitClass | Classname of the inactive bait item. |
ActiveClass | Classname created when bait is activated. |
Radius | Maximum distance in meters for the initial spawn position. |
MinSpawnDistance | Minimum distance in meters for the initial spawn position. |
DurationMinutes | Maximum active duration of the bait. |
FirstSpawnDelaySeconds | Delay before the first spawn check. |
CheckIntervalSeconds | Time between subsequent spawn checks. |
SpawnChance | Chance per check from 0.0 to 1.0. 0.22 means 22%. |
MaxAnimals | Total animals the bait can spawn over its lifetime. 0 removes this cap. |
MaxAnimalsPerTick | Maximum animals spawned during one successful check. |
GroupSpreadRadius | Placement radius in meters for additional group members. |
DeleteWhenExpired | Deletes the bait object when it expires. |
MatchInheritedBaitClasses | Allows the profile to match bait items derived from BaitClass. |
Animals | Animal 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
| Setting | Description |
|---|---|
ClassName | Animal classname. Must exist in the loaded game configuration and inherit from AnimalBase. |
Weight | Relative selection chance. A weight of 3 is three times as likely as a weight of 1. |
MinGroupSize | Minimum requested group size. |
MaxGroupSize | Maximum requested group size. |
LifetimeMinutes | 0 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
| Setting | Description |
|---|---|
DefaultSpawnedAnimalLifetimeMinutes | Default timed-cleanup lifetime. 0 disables timed cleanup for animals using this default. |
AnimalCleanupCheckIntervalSeconds | Interval between cleanup checks. |
AnimalCleanupPlayerRadius | Distance used to check for players near animals due for cleanup. |
DeferAnimalCleanupNearPlayers | Enables 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.
