Fast Happy Ghasts
Every happy ghast flies at least twice as fast as vanilla, and the harness colour is a throttle. A 26.2 data pack, and the most interesting of these packs to read: its throttle is a data file rather than code, and it does almost nothing on a tick loop.
Source and releases are on
GitHub
(GPL‑3.0); issues go to
the
tracker. It is also published on Modrinth as
Elkonia:
Fast Happy Ghasts — latest 26.2.2.0.2, 10 KB.
The speed model
Every layer is an add_multiplied_base attribute modifier on
both minecraft:flying_speed and
minecraft:movement_speed. That choice matters: because they are
add_multiplied_base, the layers sum against the base
rather than compounding with each other, so the result stays predictable however
many are active at once.
speed = 0.05 × (1 + boost + throttle + sprint + burst + riders + tow)
| Layer | Trigger | Value |
|---|---|---|
boost | always, permanent | +1.0 |
throttle | harness colour | −0.4 … +2.0 |
sprint | Speed I / Speed II+ on the ghast | +0.5 / +1.0 |
burst | snowball, 60 s each | +1.0 |
riders | 2 / 3 / 4 passengers | −0.1 / −0.2 / −0.3 |
tow | leashing anything | −0.2 |
The worst legal combination — black harness, four riders, towing a boat
— still comes to 1.0 − 0.4 − 0.3 − 0.2 = +0.1,
i.e. 0.055 against vanilla's 0.05. So a loaded ghast is
slower than an empty one and never slower than vanilla. The
ceiling is a red harness with Swiftness II and a fresh snowball, flown solo:
+5.0, or 6×.
Designing the penalty layers so that their worst case still clears the vanilla baseline is what stops "cargo slows you down" from turning into "the pack made my ghast worse than not installing it".
Throttle tiers
| Tier | Harness colours | Throttle | Total, unladen |
|---|---|---|---|
| Race | red, orange | +2.0 | 4× |
| Fast | yellow, pink, magenta | +1.0 | 3× |
| Cruise | lime, green, purple | +0.5 | 2.5× |
| Stock | white, brown, light blue, cyan | 0.0 | 2× |
| Low | blue, light gray | −0.2 | 1.8× |
| Brake | black, gray | −0.4 | 1.6× |
Three techniques worth reading the source for
The throttle is data, not code
item_modifier/throttle.json writes a
minecraft:attribute_modifiers component onto the harness item
itself. The game then applies it while the harness is worn and removes it the
moment the stack leaves the slot — so recolouring or shearing takes effect
instantly, and the throttle keeps working even with the pack's own loop disabled.
The constraint behind the design is one worth knowing generally: a data pack cannot change an item's default components. So the stack is stamped at the moment it is equipped instead. See data components and item modifiers.
Nothing polls every tick
Adoption, the throttle stamp and the snowball burst all hang off vanilla
advancement triggers —
player_interacted_with_entity, started_riding,
player_sheared_equipment. A ghast only enters the 20 tick loop
when someone is actually using it, and leaves once it has no passengers and no
burst remaining. A parked ghast costs zero commands per second.
That is the difference between a pack that scales on a busy server and one that
does not — see ticking & performance.
Four states have no event, and that is the only reason a loop exists
Checked against all 58 triggers in 26.2, four things simply cannot be observed by an advancement:
| Unobservable | Why |
|---|---|
| A potion landing on a ghast | effects_changed reports the player's effects and has no mob equivalent. |
| Dismounting | started_riding has no counterpart trigger. |
| Leashing / unleashing | No trigger exists for either. |
| A timer expiring | Nothing fires when a duration runs out. |
Those four are polled, for in-play ghasts only, and a 600 tick sweep exists solely because no trigger fires when a mob spawns. This is a good worked example of a general rule: reach for a loop only where the event you need does not exist, and be able to say which event that is.
Compatibility
| Minecraft | 26.2 |
| Loader | Data pack — no mod loader |
| Licence | GPL-3.0 |
| Coexistence | Changes mob attributes only — no worldgen, so it is safe alongside Elkonian Wilderness, Deep Coral Ocean and Phantom Keep. |
| Existing worlds | Yes — it adds no terrain, so it can be added to a save at any time. |
Because it works by attribute modifiers rather than by replacing the entity, it
does not conflict with packs that retexture or rename happy ghasts, but it
will stack unpredictably with another pack that also modifies
flying_speed.
Sources
- GitHub — Elkidogz/fast-happy-ghasts — source, releases and the speed model this page describes.
- Issue tracker