Magical gene / no coat effect
Fireproof
A horse that does not burn, and neither do you while you are on it. It swims through lava rather than walking on top of it — submerged, slow, and entirely unbothered.
The gene, its inheritance and its founder table exist and are covered by the test suite; the translator that turns it into behaviour was written against the 26.1.2 sources and is flagged unverified in its own comments. Nothing on this page has been watched happening to a horse. What to look at, and what is most likely to be wrong, is on To be verified.
What it does
| Combination | Outcome |
|---|---|
Frp/Frp | horse and rider immune to fire; swims in lava |
| anything else | nothing — it burns like any horse |
Lava is a route, not a wall
The horse sinks into lava and swims through it the way an ordinary horse swims through water: slowly, at the surface, with its rider safe. That is the whole reason to breed one. A lava lake stops being a detour.
Health
Strictly an improvement. It costs nothing and removes an entire category of death. It is homozygous recessive and absent from wild horses as a homozygote, so you will be breeding for it rather than finding it.
- Gene key
horsegenetics.fireproof- Alleles
Frpfireproof,n- Inheritance
- homozygous recessive
- Reaches the game as
traversaleffects —fire_immuneand a lava-swim flag, both withtarget: both- Coat effect
- none, ever
GeneAbilityHandler.onTraversalDamage cancels any
LivingIncomingDamageEvent whose source carries the
minecraft:is_fire damage-type tag - so lava, fire blocks, burning and
other mods’ heat sources alike - when it lands on a horse expressing the gene,
or on the player who is its first passenger at the moment of the hit.
Nothing is written onto the player, so there is nothing to take off on dismount and
no invulnerability to duplicate: step off and the next hit is an ordinary one.
The first version did nothing, and the reason is worth keeping. It
called clearFire() on the tick, which puts out the burning but not the
damage: lava and fire blocks hurt directly, and vanilla’s own immunity is a flag
on the entity type, which a gene cannot set per horse. The owner rode one into
lava on 2026-09-10 and neither of them was protected.
Swimming, not walking
Walking on lava is the cheaper build — the walk_on_water
branch already does the buoyancy trick and pointing it at lava is a few
lines. It was rejected because a horse trotting across a lava lake reads as
a bug in someone else’s mod, whereas a horse wading through it
reads as a horse that belongs there. The extra cost is a fire-damage cancel
for the rider and a movement speed in lava.
How it floats. The first build only slowed the sink, from the
server, and in play the horse simply sank: a horse under a rider is simulated
by the rider’s client, and the server’s velocity changes never reach
it. Vanilla lava movement pulls down by a quarter of the horse’s
GRAVITY attribute each tick, and attributes do sync to the
client, so lava_swim holds a transient gravity modifier of
-0.16 (net -0.08) while the lava is above the horse’s
fluid-jump threshold. That settles into a slow rise, and dropping it at the
surface makes the horse bob there - the float vanilla gives a ridden horse in
water and not in lava. The speed is still vanilla lava’s fixed crawl: there
is no attribute on it, and standing on lava like a strider is
canStandOnFluid, an entity method with no event, which would need a
mixin.
One shared change, three genes
The target: self | rider | both parameter on
traversal is wanted by this gene, by
bird boned and by
ocean-born. Build it once, with the
removal path included, and all three are safe.
Why it is not two loci
Fire immunity and lava swimming could have been separate genes, the way swimming and breathing are separate on the water side. They are one here because lava immunity without lava swimming is a horse that stands in fire unharmed and can do nothing with it — there is no interesting horse in between, so there is no reason to make a breeder find two.
common/genetics/genes/FireproofGene.java