Magical gene / a faint head and mane tint
Spawner
Feed the horse anything it eats and two of a particular creature appear nearby — every meal. Which creature depends on the allele, and there is one for every mob in the game. The only outward sign is a pink tinge through the head and mane.
The first in-game test was a cow spawner that never made a cow: the daily timer could not survive a reload. Rebuilt to fire when fed, it was played again the same day and works. Hostile alleles have not been tried; see To be verified.
What it does
| Combination | Outcome |
|---|---|
| two copies of one allele | each meal it eats makes two of that mob |
| two different alleles | nothing |
anything with an n | nothing |
Two per meal, and the food is the limit
Hand it anything it eats — its ordinary food, whatever a special diet asks for, or its favourite — and two appear, however many are already standing there. The only thing that counts is a meal it actually eats: a horse at full health that turns wheat down makes nothing, and you keep the wheat. Left alone in a field it does nothing at all.
It used to fire by itself once a Minecraft day, and in play it never fired: the day was counted on a clock that restarts every time the horse loads. It was moved onto feeding on 2026-09-10, and later the same day the "only up to two nearby" cap came off too — with the player paying food for every firing, the food is the limit. Both the owner’s calls.
Some of the alleles are not friendly
There is an allele for every mob, hostile ones included. A horse that produces two creepers every time you feed it is a real thing this locus can express — and it is never something you will catch, because no wild horse is ever homozygous here. Somebody has to make it.
The colour of what it makes
Epigenetic, so a line breeds its own shade — every sheep one horse makes is the same dye, and its foals drift from it. Only for the mobs that have colours or variants: sheep, cows, pigs, chickens, cats, wolves, frogs, foxes, parrots, rabbits (never the killer one), llamas, axolotls, mooshrooms and a few others. A spawned zombie is a zombie.
This was promised here from the start and never happened until 2026-09-10 - before that, every spawned mob picked its own colour, as a wild one would.
Health
None to the horse. What it makes may be another matter.
- Gene key
horsegenetics.spawner- Alleles
- one per mob including hostiles, plus
n - Inheritance
- homozygous recessive, matched pair; no homozygous founders
- Reaches the game as
- a
summoneffect on the built-inOnFeedtrigger - Epigenetic
variant, a number in [0, 1) per allele copy, carried to the translator asSummon.variant- Coat effect
- a faint pink tint on head and mane
This is the compatibility break to avoid. Placing a mob directly skips FinalizeSpawnEvent, and with it every claim mod, spawn-blocker and region protection in the pack — a horse in someone’s protected base would spawn mobs the region explicitly forbids. Go through the normal spawn path and let the event fire, including the mod’s own holy ward.
A persistent mob never despawns. With no cap, every expressing horse fed every day is unbounded growth. What it makes is spawned without setPersistenceRequired — though note a cow or a sheep is an animal and does not despawn anyway, so for the farm alleles the food really is the only limit.
With the cap gone, a firing that costs nothing must not happen. A tamed horse at full health refuses wheat and vanilla hands it back, so a trigger on the click would be free and endless. GeneAbilityHandler.onFeed notes the stack in hand at HIGHEST priority (before the diet and favourite-food handlers shrink it), and drainPendingFeeds looks again at the end of the tick: fewer items, or a different item (a bucket back from a bucket of something), means it ate. Creative consumes nothing, so a creative feeding always counts.
“Eats” is the same split the crouch-feed goal tempts with: the favourite, the special diet’s list, or vanilla horse food. The trigger is GeneAbility.Trigger.OnFeed, built-in only — a gene file cannot ask for it yet (gap 178). A timed summon, if a gene ever declares one, still tops up to its number rather than making it; only the fed path is uncapped.
The old once-a-day timer was tickCount % 24000, and tickCount is not saved: every reload started it again from nothing. Every timed beat in the handler now counts on the world’s saved game time instead, offset per horse by its UUID so horses still do not fire in lockstep.
Nothing hostile on Peaceful, and nothing at all if the server has turned the relevant spawning off. A gene that ignores the difficulty setting is a gene that gets the mod blamed.
Only a couple of dozen vanilla mobs have colour variants. That is a property of some alleles rather than of the locus, and the gameplay tab says so — otherwise it reads as broken on the rest.
How it is applied: server/MobVariants. Since 1.21.5 a mob’s colour is a data component on the entity (SHEEP_COLOR, COW_VARIANT, CAT_VARIANT…), set with Entity.setComponent the way a spawn egg sets it. The helper takes the first colour component the spawned mob actually has and picks from that component’s own values - an enum’s constants, or every entry of the registry a Holder lives in, sorted by id so the same number means the same variant in every world. The killer rabbit is excluded by name. A data gene’s summon passes Summon.NATURAL and the game chooses, as before.
The only genuinely new verb in its group
summon was originally specified to cover this gene and
leader of the pack together. They
turned out not to be the same thing at all — following is
mob_aura with a third mode, and only spawning needs a verb.
Narrowing it to one user made it much easier to bound.
A locus almost nobody will find by accident
With no homozygous founders and an allele per mob, a player must find two
carriers of the same allele out of eighty, with no way to see
either. Lycan escapes this because wild
shifters exist. If spawner should be findable rather than purely
engineered, the mechanism is already here: a herd could roll one allele
and hand it to its members, so two carriers from one herd match.
FounderContext would need a herd seed passed in —
small, and it stays Minecraft-free.
From self-limiting to paid-for
Almost every design for a spawning gene is a lag machine, because almost every design counts time and not population. The first version answered that by topping up to a fixed local number, so a horse in a stocked field did nothing at all. Moving the trigger from a clock to a meal changed the question: a firing now costs the player something every time, so the limit can be the cost rather than the count. That is why the cap came off — and why "it ate" has to be checked rather than assumed, because a trigger that is uncapped and free is the lag machine again.
The one behaviour gene that paints
Everything else in this family is invisible. This one carries a faint pink tint on the head and mane, and it should: a horse that manufactures creatures on demand is the one case where a player deserves a warning they can see before they buy it.
common/genetics/genes/SpawnerGene.java