You are viewing a potentially older version of this package. View all versions.
Hardwire99-Offspring_Portal-1.3.0 icon

Offspring Portal

Teleports tamed juveniles and breedable eggs from breeder portals. Dynamic species discovery from breeding pens. Dual-purpose egg collector portal. Mod creature support.

Date uploaded a day ago
Version 1.3.0
Download link Hardwire99-Offspring_Portal-1.3.0.zip
Downloads 124
Dependency string Hardwire99-Offspring_Portal-1.3.0

This mod requires the following mods to function

denikson-BepInExPack_Valheim-5.4.2350 icon
denikson-BepInExPack_Valheim

BepInEx pack for Valheim. Preconfigured with the correct entry point for mods and preferred defaults for the community.

Preferred version: 5.4.2350
ValheimModding-Jotunn-2.30.0 icon
ValheimModding-Jotunn

Jötunn (/ˈjɔːtʊn/, 'giant'), the Valheim Library was created with the goal of making the lives of mod developers easier. It enables you to create mods for Valheim using an abstracted API so you can focus on the actual content creation.

Preferred version: 2.30.0

README

Offspring Portal

Automate your breeding pens. Offspring Portal teleports tamed juveniles and breedable eggs from your breeder area to distant maturing pens the moment they wander into range — keeping vanilla population caps from stalling production.

Press E on juveniles to toggle follow/stay — useful for leading piglets and wolf cubs through portals or into pens before they grow up.

Build a portal, name it, configure it once, and let the mod handle the logistics. Species lists are built automatically from tamed adults near your breeder portals — no need to manually register mod creatures.

Offspring portals are for animal automation only — players cannot travel through them. They are excluded from portal travel mod lists and map-based portal UIs.

Current version: 1.3.0 · Valheim 1.0.x final release


Support & feedback

Bug reports, feature requests, and questions:

When reporting a problem, include your mod version, single-player or multiplayer, and other portal-related mods (e.g. XPortal).


Features

  • Custom offspring portal — Hammer build piece (20 Fine Wood, 10 Greydwarf Eyes, 2 Surtling Cores)
  • Five portal roles — Breeder, Maturing, Farm, Egg Collector, and Cull
  • Dynamic species discovery — Maturing, Farm, and Egg Collector dropdowns are built from tamed breedable adults near breeder portals (deduped per species)
  • Mod creature support — Any creature that passes the breedable criteria below is discovered automatically via prefab name
  • Automatic juvenile routing — Breeder portals send tamed juveniles to matching maturing pens
  • Automatic egg routing — Breeder portals send laid eggs to Egg Collector or maturing pens (see dual vs single-purpose below)
  • Mate draw — Fed, ready adults near breeder portals nudge toward same-species mates within breeding range
  • Round-robin — Multiple maturing/farm/cull/egg-collector portals of the same type share load automatically
  • Optional adult routing — Maturing portals can forward grown adults to Farm, Cull, or leave them (None)
  • One shared Cull yard — A single Cull portal handles every species
  • Portal config UI — Press E on a portal to set name, type, species, and destination
  • Custom portal names — Shown on hover for easy identification
  • Juvenile follow command — Press E on tamed juveniles to toggle Follow / Stay (configurable)
  • Breeding cap warning — Hover warning when a maturing pen sits inside vanilla breeding cap radius
  • Distant pen support — Juveniles teleport to maturing pens even when that chunk is not loaded on your client
  • Multiplayer support — Active-zone routing with server-validated destinations; all players need the mod installed
  • Connected portal glow — Runes light up when routing is ready; status on hover and in config UI (synced from server on dedicated)
  • Portal network compatible — Offspring portals are excluded from player portal travel lists (XPortal, map portals, and similar mods)
  • Players cannot travel — Offspring portals are for animals only, not player teleportation
  • Configurable — Scan range, mate draw, discovery radius, intervals, cooldowns, and more via offspringportal.mod.cfg

At a glance

Portal type What it does
Breeder Sends juveniles and eggs out; discovers nearby breedable species; optional mate draw
Maturing Receives juveniles and single-purpose eggs; optionally forwards grown adults
Egg Collector Receives dual-purpose eggs only (e.g. hen eggs for recipes + hatching)
Farm Receives adults routed back from maturing pens (by species)
Cull One shared yard — receives adults marked for slaughter

Juvenile follow: With EnableFollowCommand on (default), look at a tamed juvenile and press E to toggle Follow / Stay.

Minimum setup: 2 portals (Breeder + Maturing). Farm, Egg Collector, and Cull are optional.

Build cost: 20 Fine Wood · 10 Greydwarf Eyes · 2 Surtling Cores


Dynamic species discovery

Breeder portals scan for tamed breedable adults within discovery range and register each species once for the whole world (four boar pens still produce one Boar entry).

That list drives the Receives dropdown on Maturing and Farm portals, and the egg-type dropdown on Egg Collector portals. All is always available as a catch-all.

Discovery refreshes every breeder scan, so placing a new mod creature at a breeder portal adds it to the lists without editing config files.


Dual-purpose vs single-purpose eggs

When a tamed egg layer lays an egg near a Breeder portal, routing depends on whether the egg item is also a crafting ingredient.

Egg type How the mod decides Where it goes
Dual-purpose The egg item appears in at least one enabled ObjectDB crafting recipe (e.g. hen egg used in cooking) Egg Collector portal for that egg type → if none, Maturing (species match → All)
Single-purpose The egg only hatches — it is not used in any enabled recipe (e.g. asksvin egg) Maturing portal (species match → All) — same path as live-born juveniles

Examples

  • Hen (dual-purpose): Route recipe eggs to an Egg Collector → Egg Hen pen (chest auto-collect, sorting, etc.). Eggs that miss the collector fall back to maturing pens for hatching. You can heat a subset at the maturing destination.
  • Asksvin (single-purpose): Eggs go straight to Maturing → Asksvin or All — no Egg Collector needed.

Egg Collector portal

  • Set Type: Egg Collector and choose the egg type (shown as Egg Hen, Egg Penguin, etc.).
  • The dropdown lists dual-purpose egg layers discovered near breeder portals, plus egg types already configured on other Egg Collector portals (so distant bases can configure collectors without local hens loaded).
  • Do not use Maturing for dual-purpose egg collection — use Egg Collector so recipe eggs and hatch eggs can be split across destinations.

For mod creators — what counts as breedable?

Offspring Portal does not use a hardcoded species list. It discovers creatures at runtime from vanilla breeding components. If your modded animal works with the rules below, it should appear in portal dropdowns and route correctly without a patch from us.

Requirements (all paths)

  1. The creature must be tamed.
  2. It must be within discovery scan range of a placed Breeder portal (default: max of breeder scan range and mate draw range).
  3. The adult must have a Procreation component with m_offspring pointing at a valid prefab.

Live-birth species (boar, wolf, lox, asksvin calf, etc.)

The offspring prefab chain must be:

Procreation.m_offspring → Character (juvenile)
                              └── Growup component
                                    └── m_grownPrefab (or m_altGrownPrefabs) → adult Character

If that chain resolves, the species is registered under the adult prefab name (vanilla names like Boar, Wolf, Lox, Chicken for hens, or your mod's prefab name).

Egg-laying species (hen, penguin, mod egg layers)

The offspring prefab chain must be:

Procreation.m_offspring → egg prefab
                              └── EggGrow component
                                    └── m_grownPrefab → hatchling Character
                                                          └── Growup → adult Character
  • Dual-purpose if the egg ItemDrop is referenced by any enabled crafting recipe → eligible for Egg Collector routing.
  • Single-purpose if the egg is hatch-only → routes like a juvenile to Maturing.

Fallback registration

If the full juvenile/egg chain cannot be resolved but the tamed adult has Procreation and is not itself a juvenile (Growup absent), the mod still registers the species using the adult's normalized prefab name. This helps mod creatures whose prefab references are incomplete in the asset bundle.

Species keys and matching

  • Keys come from normalized prefab names (clone suffixes stripped).
  • Vanilla aliases are mapped where known (e.g. prefab names containing HenChicken / UI label Hen).
  • Portal Receives matching is case-insensitive; All accepts every discovered species.
  • Mod creatures typically appear under their adult prefab name in dropdowns.

Checklist for mod authors

Component Live birth Egg layer
Procreation on tamed adult
Procreation.m_offspring set
Juvenile Character + Growup
Egg prefab + EggGrow
Hatchling Growup → adult
Egg in crafting recipe (optional) dual-purpose only

Mate draw (breeder portals)

When EnableMateDraw is on (default), breeder portals periodically scan for fed, ready-to-breed tamed adults and nudge them toward the nearest eligible same-species mate until they are within vanilla breeding range.

Mate draw applies when the animal:

  • Has Procreation and ReadyForProcreation() is true
  • Is not hungry, not alerted, not following the player
  • Is an adult (no Growup on self)
  • Has a resolvable species key

Mate draw stops when animals are already within partner range, become pregnant, or no longer qualify.

Defaults: 15 m draw range, 1.5 s scan interval, 2.5 m stop distance (capped below vanilla partner range).


How juveniles and eggs move

Breeder Portal                         Maturing Portal
  (at breeding pen)    ── juvenile ──►  (at grow-up pen)
                       ── single-use egg ──►

Breeder Portal                         Egg Collector Portal
  (at breeding pen)    ── dual-purpose egg ──►  (collection / chest pen)
                       └── fallback ──► Maturing (if no collector)
  1. Place a portal at your breeding area → configure as Breeder
  2. Place a portal at your grow-up area → configure as Maturing → set Receives to a species (or All)
  3. For dual-purpose egg layers, add an Egg Collector portal → set Receives to Egg Hen (or the matching egg type)
  4. When a tamed juvenile or egg enters the breeder portal's scan radius, it teleports to the next matching destination (round-robin if you have several)

Hover any portal to see its Name, role, and warnings.


Maturing pen destinations (adults)

Each Maturing portal has one Receives species (or All) and one Destination for adults that grow up on that portal.

Destination Behavior
None Adults stay on the maturing pen (default)
Farm Adults teleport to a Farm portal matching their species (or All)
Cull Adults teleport to your Cull yard — one Cull portal serves every species

If Destination is Farm or Cull but no receiver portal exists yet, you'll see a yellow hover warning and adults won't teleport until you place one.

Mixed species, different outcomes: Use one Maturing portal per species when adults need different destinations. Place them in the same building if you like — the Breeder sends each juvenile to the Maturing portal whose Receives matches that species.


Example setups

Starter — 2 portals (juveniles only)

Portal Type Receives Destination Name example
Breeding area Breeder Boar Farm
Grow-up pen Maturing Boar None Boar Maturing

Hen farm — dual-purpose eggs

Portal Type Receives Destination Name example
Coop Breeder Hen Coop
Recipe egg pen Egg Collector Egg Hen Egg Collection
Hatch pen Maturing Hen None Chick Maturing

Hen eggs try the Egg Collector first; overflow or unmatched eggs fall back to Maturing. Chicks grow up on the maturing pen.


Boar production + cull automation

Portal Type Receives Destination Name example
Breeding pen Breeder Boar Farm
Grow-up pen Maturing Boar Cull Boar Maturing
Slaughter area Cull Boar Cull Yard

Cull boars, keep wolves on-site

Portal Type Receives Destination Name example
Main breeder Breeder Mixed Farm
Grow-up pen Maturing Boar Cull Boar Maturing
Grow-up pen Maturing Wolf None Wolf Maturing
Cull yard Cull Cull Yard

Return adults to the farm

Portal Type Receives Destination Name example
Breeder Breeder Boar Farm
Distant grow-up Maturing Boar Farm Boar Maturing
Farm holding Farm Boar Boar Holding

Multiple maturing pens (round-robin)

Portal Type Receives
Breeder Breeder
North pen Maturing Boar
South pen Maturing Boar

Same species + same role = round-robin.


Config UI (press E on a portal)

Field Breeder Maturing Egg Collector Farm Cull
Name
Type
Receives All juveniles (fixed) (discovered species) (dual-purpose eggs) (discovered species) All adults (fixed)
Destination None / Farm / Cull

Receives lists are populated from species discovered at breeder portals. Until discovery runs, vanilla fallback options may appear.


Config file

After first launch, edit:

BepInEx/config/offspringportal.mod.cfg

General

Setting Default Description
BreederScanRange 10 Scan radius (meters) around breeder portals for juveniles and eggs
BreederScanIntervalSec 0.5 How often breeders scan
MaturingAdultScanIntervalSec 30 How often maturing pens scan for adults to forward
TeleportCooldownSec 2 Per-animal/per-egg cooldown after teleport
DistantTeleportTimeoutSec 15 Wait for distant zones to load before giving up
AllowRetransport false Allow the same animal or egg to teleport again
EnableCapWarning true Warn when a maturing pen is inside breeding cap radius
EnableFollowCommand true Press E on tamed juveniles to toggle follow/stay

Breeding

Setting Default Description
DiscoveryScanRange 0 Radius for discovering breedable species at breeders (0 = max of breeder scan and mate draw range)
EnableMateDraw true Nudge ready adults toward mates near breeder portals
MateDrawRange 15 Max distance between mates before nudging (meters)
MateDrawIntervalSec 1.5 How often breeders scan for mate draw
MateDrawStopDistance 2.5 How close mates move before stopping

Restart Valheim after changing config values.


Multiplayer

Install on server/host and every client. Everyone needs the mod to see the custom portal piece, open the config UI, and get correct hover text. BepInEx and Jotunn are required on all sides.

Routing: Destination registry and round-robin selection are server-authoritative. Detection runs on whichever peer has the portal and animals in their active zone — any player staying near pens can keep automation working while others explore. You do not need the host specifically to stand at the pens (same as vanilla breeding).

Server registry sync: On dedicated servers, the host pushes its full portal list to clients when you join and whenever portals are placed, configured, or destroyed. You do not need to visit distant maturing pens first for breeders to show Connected or for routing to use the correct destination.

Client config sync: Portal configuration updates the local registry immediately on every client, so connected rune glow and the Configure Portal status line stay accurate in multiplayer.

Dedicated servers: A connected player near the pens drives detection using their active zone. The headless server validates destinations via RPC, scans all portal ZDOs in the world save, and sends destination position/rotation to clients when executing teleports to unloaded chunks. Destroyed portals are removed from the server registry so juveniles do not route to dismantled sites.

Offline pens: With no players in active range, vanilla breeding and portal routing pause (expected).

LetsGo compatibility: When LetsGo is installed, Offspring Portal disables its own juvenile follow command so LetsGo owns follow behavior.


Requirements

Valheim 1.0.x (tested on 1.0.7). Not compatible with pre-1.0 saves/network versions.

Installed automatically with most mod managers:

Manual install

  1. Install BepInEx and Jotunn.
  2. Place OffspringPortal.dll in BepInEx/plugins/.
  3. Launch once to generate the config file.

Tips

  • Name your portals — hover text shows custom names
  • Press E on juveniles to toggle follow/stay when moving them into breeder range
  • Destination: None is the safe default until you're ready for Farm or Cull automation
  • One Cull portal can serve your entire world
  • Egg Collector is for dual-purpose eggs only — single-purpose layers use Maturing
  • One Maturing portal = one species rule for mixed keep/cull setups
  • Keep maturing pens outside vanilla breeding cap radius when possible
  • Players cannot travel through offspring portals

Source code

Public repository: github.com/cdjensen99-sudo/Offspring_Portal


Credits

By HW

Special thanks

  • KydlDev — troubleshooting assistance and code revision for dedicated-server routing, registry sync, and follow behavior

CHANGELOG

Changelog

Valheim 1.0.x production release. See below for prior version history.

1.3.0

  • Valheim 1.0.x final release — production-ready build validated on solo, hosted, and dedicated servers
  • Dedicated registry fix — portal records in unloaded zones are no longer wiped during incremental server sync; distant maturing portals stay routable
  • Server-authoritative juvenile teleports — the server moves the juvenile ZDO first, then notifies source client(s) to move the live creature (no false client-only success)
  • Follow (E) fix — follow is handled through Tameable.Interact, which is how Valheim dispatches E on tamed creatures; portal Configure is no longer blocked by juvenile hover
  • Dedicated RPC routing — juvenile route and follow requests are sent explicitly to the server peer; follow executes on the creature ZDO owner only
  • Egg Collector round-robin — hen and dual-purpose eggs alternate across every matching Egg Collector portal, including collectors configured with different hen key aliases (Egg:Chicken, Hen, etc.)
  • Egg Collector config at distant bases — the Receives dropdown includes egg types already configured on other Egg Collector portals, not only species discovered from loaded hens near breeders
  • Diagnostics — server/client log prefixes via OPLog; [Diagnostics] VerboseLogging is off by default

1.2.2

  • Diagnostic logging — verbose routing, registry sync, portal scan, and follow logs (configurable under [Diagnostics] VerboseLogging)
  • Maturing resolution failures — warnings now include a full registry snapshot listing every maturing portal and whether its ZDO is live
  • Follow troubleshooting — logs follow RPC sender/owner peers, execute failures, and LetsGo detection at startup
  • Dedicated scan visibility — logs when breeder portal scans are skipped because the pen is outside all players' active zones

1.2.1

  • Dedicated server/client desync fix — the server kept the full portal registry while clients only saw portals in loaded chunks, so breeders could show “No Maturing portal” even when routing worked
  • Server registry sync — on join and when portals are placed, configured, or destroyed, the server pushes its portal list to clients so connection status and rune glow stay accurate for distant pens
  • Unloaded destination teleports — execute routing RPC now includes maturing portal position and rotation so juveniles can teleport when the destination chunk is not loaded on the client
  • Stale portal cleanup — destroyed or removed portals are pruned from the server registry so juveniles no longer route to dismantled portal sites
  • Follow on dedicated — juvenile follow (E) invokes on the creature owner peer when LetsGo is not installed

1.2.0

  • Valheim 1.0.x final release — validated on solo, hosted, and dedicated servers
  • Dedicated server routing — portal scans honor connected players' active zones (not the headless server origin)
  • Dedicated teleports — server moves juveniles and eggs by ZDO when creatures are not instantiated locally; clients claim ownership before applying moves
  • Routing RPC — execute teleports on both the requesting peer and the ZDO owner when they differ
  • Routing diagnostics — log when no maturing or egg destination is registered on the server

1.1.1

  • Dedicated server routing — scans use connected players' active zones (not the empty dedicated origin)
  • Dedicated teleports — server moves juveniles by ZDO when the live creature is not instantiated; clients claim ownership before applying the move

1.1.0

  • Valheim 1.0.x production release — stable, feature-complete build for 1.0.x (tested through 1.0.7+ hotfixes)
  • Multiplayer routing fix — server refreshes portal registry from world ZDOs before resolving routes; execute teleports on the client with the active zone loaded
  • Client registry sync — configuring a portal updates the local registry immediately (fixes dark runes and stale status on clients)
  • Connection status fix — maturing/breeder portals no longer list themselves as upstream sources in the Configure Portal UI
  • Registry refresh — hover text, rune glow, and config status rebuild from ZDO data before displaying connection state
  • Follow RPC fix — juvenile follow executes on the requesting player's client; follow AI runs on ZDO owner (when LetsGo is not installed)
  • Includes all fixes from 1.0.2 through 1.0.7 (MP RPC routing, connected glow, egg collector preference, LetsGo compatibility, hammer icon, log spam fixes)

1.0.7

  • Hen eggs now prefer Egg Collector over Maturing when any Egg Collector portal exists
  • Normalize Egg Collector portal species keys (Egg:Chicken) for reliable matching

1.0.6

  • Cleaner hammer menu icon: no particle burst, subdued rune glow, isometric portal frame only
  • Disable OP juvenile follow when LetsGo is installed (instead of Beast Hird)

1.0.5

  • Fix config panel status for Breeder portals (was showing stale "Receives from" text)
  • Maturing portals now show both upstream and downstream routes when configured
  • Omit route lines when no matching destination portals exist

1.0.4

  • Fix NullReferenceException spam from config retry running before ZNet exists (main menu / loading)

1.0.3

  • Fix log spam/errors from ZNetView Awake hook running portal init during object load
  • Guard portal emission updates when shader lacks _EmissionColor
  • Guard routing RPCs and scans until world/network is ready; prevent duplicate RPC registration

1.0.2

  • Multiplayer routing fix — Scans run on any peer with portals in their active zone; server validates destinations via RPC (listen server and dedicated)
  • Connected portal glow — Runes light up when routing chain is complete (vanilla-style emission)
  • Connection status[Connected] / [Unconnected] on hover and live preview in Configure Portal UI
  • Config RPC retry — Client-placed portal config retries when ZDO is not yet available on server
  • Hammer menu icon — Custom rendered icon distinguishes offspring portal from vanilla portal
  • Corrected multiplayer documentation (any player in active range, not host proximity)

1.0.1

  • Stable Valheim 1.0.x ship release (tested on 1.0.7; compatible with 1.0.x hotfixes)
  • Fix Hammer build menu showing raw localization keys for the Offspring Portal piece name and description

1.0.0

  • Valheim 1.0.7 release — first stable 1.0-compatible build
  • Valheim 1.0 API fixes (Hoverable.GetHoverOffset, deferred prefab registration, portal piece registration retry)
  • Egg routing: dual-purpose eggs to Egg Collector, single-purpose (asksvin) to Maturing; improved prefab chain resolution and registry fallbacks
  • Mate draw yields to vanilla breeding AI when mates are in range (fixes lox/moose and other species not breeding)
  • Juvenile follow cleared on grow-up so adults do not retain follow state
  • Full end-to-end testing: boar, wolf, lox, hen, asksvin, moose — breed → maturing → farm round-robin
  • Updated Thunderstore dependencies for BepInEx 5.4.2350 and Jotunn 2.30.0

0.4.0

  • Offspring portals are excluded from player portal networks globally — they no longer appear in travel mod lists or map-based portal UIs

0.3.5

  • Removed pregnant glow visual (out of scope for this mod)
  • Updated README, wiki, and Discord docs: dynamic discovery, egg routing, mate draw, mod creator breedable criteria

0.3.4

  • Fix species discovery with a single animal (wider discovery radius, fallback registration)
  • Refresh breedable species list every breeder scan instead of every 5 seconds
  • Mate draw skips hungry animals explicitly
  • Pregnant glow attaches to existing animals on load; emissive sphere + stronger light

0.3.3

  • Breeder portal mate draw: fed, ready adults within 15m nudge toward each other to reach breeding range
  • Subtle warm glow on pregnant breedable adults
  • Breeding config section in offspringportal.mod.cfg

0.3.0

  • Dynamic species discovery from tamed adults near breeder portals (no hardcoded species list)
  • Egg routing: breeder portals send laid eggs to Egg Collector or maturing pens
  • Egg Collector portal role for dual-purpose eggs (e.g. hen eggs)
  • Mod creature support via breedable criteria (Procreation, Growup, etc.)
  • Juvenile follow command (press E on tamed juveniles)

0.2.14

  • Fixed offspring portals reappearing in XPortal as "(No Name)" entries (stronger XPortal list filtering and purge on world load)

0.2.13

  • Fixed portal hover text showing vanilla portal tag instead of offspring portal config

0.2.12

  • Fixed portal config UI not opening on E key for some portal setups

0.2.11

  • Fixed juvenile routing when destination pen is in an unloaded zone (deferred teleport)

0.2.10

  • Fixed portal registry not rebuilding after world load in multiplayer

0.2.9

  • Block player travel to and from offspring portals (fixes XPortal bounce-back)
  • Exclude offspring portals from XPortal's portal list when XPortal is installed

0.2.8

  • Adult routing from maturing portals (Farm, Cull, None)
  • Shared Cull portal for all species

0.2.7

  • Portal config UI (name, role, species, adult destination)
  • Custom hover text per portal

0.2.6

  • Round-robin load balancing across multiple portals of the same type and species

0.2.5

  • Breeding cap warning on maturing portal hover when inside vanilla cap radius

0.2.4

  • Distant pen teleport: wait for zone load before giving up

0.2.3

  • Multiplayer: routing runs on server; config RPC for clients

0.2.2

  • Fixed juveniles not routing when breeder portal has no declared species yet

0.2.1

  • Initial Thunderstore release: breeder → maturing juvenile routing