Magical gene / no coat effect

Magic milk volume

How many times a day the horse can be filled from. Wild type is once. The milky allele is worth one to three more, codominant, and the copies add — and because it governs a yield kind rather than a gene, it reaches milk’s milk, water and lava all three.

Crossing two of them

What it does

CombinationFillings a day
n/nonce, as everywhere else in the game
Mlk/nonce plus that copy’s number
Mlk/Mlkonce plus both numbers, added

Unlike most of the magical loci here, a single copy shows. A milky horse can be found rather than only bred, which is what makes this a reasonable first dairy gene to notice.

It governs every kind of filling

Not just milk. A water-bearing or lava-bearing horse is filled from through the same locus, so volume applies to those too — and to anything the mod ever adds that produces the same kind.

Spread across the day, not banked

Charges divide the cooldown rather than banking uses. “Three times a day” means three fillings spread across the day, not three at dawn and nothing after. That is what a dairy animal does, and it means a player cannot empty a horse and walk away.

Health

None. Milking is still gated on the horse being at its own full health, so a very productive mare is still a mare you have to look after.

Its gene carrot

Gene key
horsegenetics.magic_milk_volume
Alleles
Mlk milky, n
Priority
131 — the magical utility band, beside milk
Reaches the game as
a charges effect naming the yield kind milk
Coat effect
none, ever
Newly built, not yet play-tested

Nothing on this page has been seen in game. The translator was written against the 26.1.2 sources and is flagged as unverified in its own comments. Checklist on To be verified.

It governs a kind, not a gene

This locus does not know that the milk gene exists. It emits a charges effect naming the yield kind "milk", and every yield tagged with that kind gets the extra uses — today the plain milk, the water and the lava, all three on one other locus.

The indirection is doing real work rather than being tidy. The two loci cannot see each other’s epigenome — a gene is handed its own values and nobody else’s, deliberately — so a design where the milk gene asked “how voluminous am I” could not have read the number at all. Naming a kind is the only version of this that works, and it has the pleasant side effect that a future gene producing some other fluid is governed for free instead of by somebody remembering.

neoforge/server/GeneYieldHandler.java
int total = 1;
for (HorseAbilities.Active active : abilities) {
    if (active.ability() instanceof GeneAbility.YieldCharges charges
            && charges.kind().equals(kind)
            && GeneAbilityHandler.conditionHolds(charges.when(), horse, record)) {
        total += charges.extra();
    }
}

Why dividing the cooldown, and not a counter

A burstable version would need a second stored number on the cooldown attachment and would let a player drain the horse in one visit. Dividing the existing cooldown needs no new state at all — the stamp already on the attachment is enough — so the whole feature survives a restart for free and is inspectable with what was already there.

Rounded per copy

Each copy’s number is rounded before the two are added, rather than the sum being rounded afterwards. That way the number a horse’s sheet shows for each copy is the number that copy actually contributes, and a heterozygote worth “2” beside a homozygote worth “2 + 3” both add up in front of the reader.

Codominant, because a dairy trait is

Milk yield in a real herd is not a switch, and neither is this. Both copies count, the numbers add, and a homozygote from two good parents is substantially better than either of them — which is the ordinary shape of a production trait and the reason a dairy line is worth keeping rather than merely worth starting.

The one loud recessive-adjacent gene

Most of the utility loci here hide their carriers on purpose. This one does not, and that is a deliberate contrast: a player who has never thought about genetics can notice that one mare fills more buckets than another and start breeding on that alone. It is the gene the mod uses to teach that the numbers are heritable at all.

Source: common/genetics/genes/MagicMilkVolumeGene.java, neoforge/server/GeneYieldHandler.java