GhastQoL
The quintessential happy ghast plugin.

Happy Ghasts have the potential to be the best form of transportation ever introduced, unfortunately they're slow and difficult to catch up with when they fly away, and when you're standing on top of them you could get kicked for 'flying', this plugin fixes all of those issues and more.
Commands- /ghastqol reload — reload the config (permission ghastqol.reload, default OP).
/ghastqol rotate— snap the happy ghast you're riding (or the nearest one withinrotate.range) to yaw 0° so it lines up with the block grid. Handy when using a ghast as a build platform. Permissionghastqol.rotate(default: everyone)./ghastqol check— look at (or stand near) a ghast and run this to see whether it has the follow goal and speed boost attached, and its home/range. It re-attaches anything missing on the spot — handy for a ghast that grew up or reloaded without our logic./ghastqol settings— list all editable settings and their current values./ghastqol settings <path...> <value>— change a setting live (no restart/reload needed). The space-separated path maps to the config key, sofollow enabledmeansfollow.enabled. Examples:/ghastqol settings speed-multiplier 5,/ghastqol settings follow trigger timer,/ghastqol settings follow enabled false. Values are type-checked and range-checked, tab completion walks the path and suggests values, and changes are saved toconfig.ymland applied to all loaded ghasts immediately. Permissionghastqol.settings(default OP). Note: Minecraft AI can re-rotate a mob, so after aligning, the plugin briefly pauses follow for that ghast (rotate.hold-seconds) so it stays put. While a player is actively riding and steering, the rider's input still controls facing — align while sitting still, or hop off first.
Config (plugins/GhastQoL/config.yml)
speed-multiplier: 3.0 # 3x vanilla flight speed
only-when-ridden: true # true = only boost while a player is riding
follow: # make unridden ghasts follow the nearest player
enabled: true
range: 32.0 # only follow players within this many blocks
stop-distance: 4.0 # stop approaching once this close
speed: 1.0 # navigation speed multiplier
Following
Each ghast has a home (where it's resting — set when it loads, and re-set to wherever
a rider leaves it, mirroring vanilla). It only follows players inside range of that home
and won't chase them beyond it; if it drifts out, it steers back home.
What triggers a follow depends on follow.trigger:
look(default) — the ghast follows whoever is looking at it (withinlook-angledegrees, and with clear line of sight ifrequire-line-of-sightis on). It keeps following forlook-linger-secondsafter they look away, so a quick glance elsewhere doesn't stop it dead.timer— the ghast follows on a cycle:follow-secondschasing, thenrest-secondsof normal vanilla flight, repeating.
Tuning tips: range is the home leash radius; look-angle widens/tightens the "looking at
it" cone; speed scales glide speed; stop-distance is how close it gets.
Reload after editing with /ghastqol reload (permission ghastqol.reload, default OP).
Commands- /ghastqol reload — reload the config (permission ghastqol.reload, default OP).
/ghastqol rotate— snap the happy ghast you're riding (or the nearest one withinrotate.range) to yaw 0° so it lines up with the block grid. Handy when using a ghast as a build platform. Permissionghastqol.rotate(default: everyone)./ghastqol check— look at (or stand near) a ghast and run this to see whether it has the follow goal and speed boost attached, and its home/range. It re-attaches anything missing on the spot — handy for a ghast that grew up or reloaded without our logic./ghastqol settings— list all editable settings and their current values./ghastqol settings <path...> <value>— change a setting live (no restart/reload needed). The space-separated path maps to the config key, sofollow enabledmeansfollow.enabled. Examples:/ghastqol settings speed-multiplier 5,/ghastqol settings follow trigger timer,/ghastqol settings follow enabled false. Values are type-checked and range-checked, tab completion walks the path and suggests values, and changes are saved toconfig.ymland applied to all loaded ghasts immediately. Permissionghastqol.settings(default OP). Note: Minecraft AI can re-rotate a mob, so after aligning, the plugin briefly pauses follow for that ghast (rotate.hold-seconds) so it stays put. While a player is actively riding and steering, the rider's input still controls facing — align while sitting still, or hop off first.
How it works
Vanilla happy ghasts have a flying_speed base of ~0.05, which feels sluggish.
The plugin adds a scalar attribute modifier so the effective speed becomes
base × speed-multiplier. The modifier is applied when a ghast enters the world
(spawn or chunk load) and is cleanly removed if you disable/remove the plugin.
Notes
only-when-riddenuses mount/dismount events so the ghast is only fast with a rider aboard, then returns to normal.- Very high multipliers can make the ghast hard to steer — 2–4 is a comfortable range.
- This is standard Paper API; for Folia you'd need to swap the scheduler calls for the region/entity scheduler.
The "Flying is not enabled on this server" kick
Minecraft has a built-in check that kicks players who appear airborne too long
(Player was kicked for floating too long!). It doesn't count an entity's hitbox as
ground, so standing on a happy ghast — using it as a build platform — can get you kicked
even though you're doing nothing wrong.
GhastQoL cancels that kick, but only when the player is genuinely standing on a happy
ghast. It checks the kick's cause is the flight check, then confirms the player is on top
of (or at the rim of) a ghast's hitbox. Every other kick — bans, /kick, timeouts, real
anti-cheat — is untouched, and genuine floating with no ghast underneath is still kicked.
flight-kick-fix:
enabled: true
vertical-tolerance: 3.0 # how far above the hitbox still counts as standing on it
horizontal-padding: 1.5 # margin around the edges, for standing near the rim
log-saves: false # log each cancelled kick (handy while testing)
Usage
MIT License, if you redistribute please link back to the original repo for bug reports and maintenance, etc.