flight-disabled-unlimited message key and updated the command and teams subcommand to use it when appropriate.TeamRelation.MEMBER and adjusts the default colours of ALLY and TRUCE.
EzFlyTime does not use TeamRelation, so no code changes were required.NoClassDefFoundError crash fixed in 3.0.1.Spurious particle-shop-gui.yml save warning - StartupBootstrap called
saveResource("particle-shop-gui.yml", false) unconditionally on every startup,
producing Could not save … because … already exists after the first run.
The call was redundant: ParticleShopGUI already guards the same saveResource
behind an existence check, so the StartupBootstrap call has been removed.
TeamsAPI soft-dependency crash - NoClassDefFoundError: com/skyblockexp/teamsapi/api/TeamsSubcommand
was thrown on startup whenever TeamsAPI was absent. Bukkit's class loader
eagerly loads field-type classes in the same jar, so FlySubcommand (and
transitively its TeamsSubcommand interface) was resolved the moment
TeamsIntegration was instantiated, before any availability guard ran.
The flySubcommand field is now typed as Object; all TeamsAPI references
remain in method bodies and are resolved lazily at execution time.
NoClassDefFoundError: com/skyblockexp/teamsapi/api/TeamsSubcommand
was thrown on startup whenever TeamsAPI was absent. Bukkit's class loader
eagerly loads field-type classes in the same jar, so FlySubcommand (and
transitively its TeamsSubcommand interface) was resolved the moment
TeamsIntegration was instantiated — before any availability guard ran.
The flySubcommand field is now typed as Object; all TeamsAPI references
remain in method bodies and are resolved lazily at execution time.{time} placeholder in flight-disabled message - the remaining flight
time is now substituted into flight-disabled messages (e.g.
&cFlight disabled. Remaining time: {time}.). Updated all 8 bundled locales
(en, nl, de, fr, es, ru, tr, zh) to include the placeholder by default.This release is a major overhaul of EzFlyTime. Nearly every system has been
rewritten or significantly extended. Existing config.yml and message files
will need to be updated - delete them and let the plugin regenerate defaults,
then re-apply your customisations.
/f fly subcommand in the team plugin's command tree so players
can toggle EzFlyTime flight from within their team commands.teams.claimed-chunks-only config option (default false): when enabled,
EzFlyTime-managed flight is restricted to the player's own team-claimed chunks.
Entering an unclaimed or enemy chunk mid-flight automatically lands the player.teams.enabled config toggle to disable the integration entirely.ezflytime.teams.fly.bypass (default false): exempts a player
from the claimed-chunks-only restriction.teams-no-fly-unclaimed, teams-fly-zone-left,
teams-not-in-team (all 8 locales)./flytime and
purchase vouchers directly using Vault economy currency. The GUI is fully
configurable in voucher-gui.yml (title, slots, items, sounds, prices).on-buy-commands and
on-use-commands to any voucher in config.yml to run console or player
commands automatically. Supports placeholders: {player}, {voucher},
{voucher_name}, {duration_seconds}, {amount}.particle-shop-gui.yml and particles.yml.display.flytime-mode: fuel).%ezflytime_time%, %ezflytime_seconds%,
%ezflytime_minutes%, and %ezflytime_fuel% in any PlaceholderAPI-compatible
plugin.language: in
config.yml to switch instantly./flyvoucher tab completions now respect
permissions: give is only suggested to players with ezflytime.give, and
buy only to players with ezflytime.buy./flytime top leaderboard command (permission ezflytime.top,
default: true).max-single-flight-seconds). A per-player bypass
permission is available.preserve-on-death)./flytime with no arguments now opens the voucher shop GUI for all players
who have the ezflytime.buy permission (default: true). Previously only
server operators saw the shop; regular players received only a "remaining
time" message.ezflytime.buy is now declared in plugin.yml with default: true, making
the shop accessible to all players out of the box. Restrict it via your
permission manager if needed./fly and /flytime no longer operate independently of each other - both
draw from and update the same flight-time balance.give, set, remove) no longer send a
duplicate notification to the target player. The command handler sends one
message; FlyTimeManager is told notify=false.vaultunlocked instead of vault as an optional
dependency; Vault has no Modrinth listing whereas
VaultUnlocked is the actively maintained fork.plugin.yml now includes both Vault and VaultUnlocked in softdepend so EzFlyTime
loads correctly regardless of which economy provider is installed./flyvoucher tab completions are now gated on sender permissions: give is only suggested
to players with ezflytime.give and buy only to players with ezflytime.buy.ezflytime.buy could never open the voucher shop GUI because
the permission was used in code but not registered in plugin.yml, causing
it to silently default to OP-only./flyvoucher suggested give and buy to every sender
regardless of what they were actually allowed to do.FlyTimeManager).preserve-on-death in the config.yml. Example usage:flight:
# Preserve flight state across death/respawn. If true, players keep plugin-granted
# flight after they die and respawn (defaults to true).
preserve-on-death: true

Sell flight time with customizable vouchers, and make flying players look awesome with highly configurable particles. Also includes configurable bossbar for countdown and has PlaceholderAPI support.