Virtual Elytra time trials with private rings, route guidance, ghosts, Boost Portals, stats, and in-world course editing
Ely-sky
The world is the course.
Build polished Elytra time trials through the terrain and builds your server already has — without permanently filling the world with checkpoint structures.
Version: 1.0.0
Platform: Paper 26.2
Java: 25
Optional integrations: PlaceholderAPI, MiniPlaceholders, Vault, LuckPerms
About Ely-sky
Ely-sky is a Paper plugin for creating virtual Elytra time trials around an existing Minecraft world.
Traditional Elytra courses often need large physical rings, arrows, barriers, or a dedicated minigame area. Ely-sky takes a different approach: course rings, route guidance, Boost Portals, and race ghosts are shown privately to the player flying the course. To everyone else, the world stays the way it was built.
That means a course can dive through a ravine, follow a mountain pass, weave between builds, circle spawn, or turn almost any interesting part of a world into a flight challenge without permanently changing the scenery.
Players choose a course, fly it, improve their time, and optionally race recorded ghosts or compete on shared leaderboards. Multiple players can use the same course at the same time, but every run is its own independent time trial — Ely-sky does not require race lobbies, queues, teams, or synchronized starts.
What Ely-sky includes
- Private BlockDisplay checkpoint rings and particle route guidance.
- An in-world course editor with direct placement controls.
- Multiple configurable ring sizes.
- Boost Portals with adjustable size and strength.
- Precise checkpoint crossing, with race timing beginning at Ring 1.
- Missed-ring detection and quick course restarts.
- Personal bests, server bests, attempts, finishes, DNFs, averages, and time-racing statistics.
- Up to two comparison ghosts per racer.
- Personal Best, Server Best, Rival, and leaderboard-player ghost options where competition settings allow them.
- Casual and Competitive presentation modes.
- Revision-scoped records so changed course geometry does not mix old and new competitive times.
- Optional temporary loan Elytra and fireworks with crash-safe restoration.
- Configurable fall and Elytra-collision protection during active runs.
- Admin test runs that do not write attempts, records, rewards, or leaderboard results.
- Course validation, record moderation, diagnostics, and repair tools.
- Optional PlaceholderAPI, MiniPlaceholders, Vault, and LuckPerms support.
- A public Bukkit service API and race lifecycle events for other plugins.
Creating a Course
Ely-sky is designed so most of the actual route can be built while flying through the world.
1. Create the course
/elyskyadmin create Canyon Run
New courses begin closed and the editor immediately enters Start placement mode.
Stand where racers should be prepared, face the direction they should launch, and left-click to save the Start.
2. Fly the route and place rings
Once Start is set, fly the route you want players to follow.
Left-click places the next timed checkpoint ring at your current position and facing direction.
While editing:
| Editor control | Action |
|---|---|
| Left-click | Place or confirm the current course element |
| Right-click | Undo the previous edit or cancel the current placement |
| Sneak + scroll | Change the ring or portal size |
| Ctrl/Sprint + left-click | Place a Boost Portal |
| Ctrl/Sprint + Sneak + scroll | Adjust Boost Portal strength |
Boost Portals are route elements rather than timed checkpoints, so placing one does not change ring numbering.
If the generated route guidance needs another pass, it can be refreshed with:
/elyskyadmin trail refresh [ring]
3. Place the Finish
When the timed route is complete, enter Finish placement mode:
/elyskyadmin finish
Move to the center of the finish, face through it, and left-click to place it.
A complete course requires a Start, at least one timed ring, and a Finish.
4. Add the course details
While the course is open in the editor, its public information can be changed without editing files directly:
/elyskyadmin rename <new name>
/elyskyadmin set description <text>
/elyskyadmin set icon <material>
/elyskyadmin set difficulty <none|easy|normal|hard|expert>
/elyskyadmin set permission <permission-node>
/elyskyadmin set competition <inherit|casual|competitive>
Use none as the permission value when the course should not require an additional access permission.
5. Finish editing
/elyskyadmin done
The course remains closed until it is deliberately opened to players.
6. Validate and test it
Before publishing, Ely-sky can check the course structure and run it through the normal race engine without touching real records:
/elyskyadmin validate Canyon Run
/elyskyadmin test Canyon Run
Test runs do not change attempts, personal bests, leaderboards, or rewards.
7. Open the course
When everything feels right:
/elyskyadmin open Canyon Run
The course is now available to players who have access to it.
Course revisions: After a course has been published, competitive geometry changes advance its revision. Existing times stay archived with the revision they were earned on instead of being compared against a changed route.
Using Ely-sky
For players, the normal entry point is simply:
/elysky
Alias:
/esky
The menu provides access to available courses, personal statistics, course details, leaderboards where enabled, ghost selection, and player settings.
Flying a course
Choose an available course and start the run. Ely-sky prepares the player at the course Start and displays a countdown.
The timer does not begin during the countdown. Timing begins when the player crosses Ring 1, so the launch itself does not become part of the recorded time.
From there:
- Fly through each timed ring in order.
- Follow the private particle guidance if it is enabled.
- Fly through any Boost Portals placed along the route.
- Reach the Finish after completing the timed rings.
If a checkpoint is positively missed, Ely-sky gives the racer a short recovery window before the run is restarted. Players can also restart instantly at any time with:
Shift + Left-click
or:
/elysky restart
To end the current run:
/elysky leave
Personal stats
Ely-sky keeps per-course statistics including:
- Best time
- Latest finish
- Average finish time
- Attempts
- Finishes
- DNFs
- Completion rate
- Total time racing
- Competitive rank when that information is enabled
Ghost racing
Ghosts are private recorded replays shown only to the racer. A player can race with up to two ghosts at once.
Depending on the course's competition mode, ghost choices can include:
- Personal Best — race your own fastest run.
- Server Best — chase the fastest eligible time on the course.
- Rival — compare against the configured competitive rival selection.
- Leaderboard Player — choose a retained replay directly from the leaderboard.
Players can configure their primary and secondary ghost preferences from the Ely-sky menu.
Casual and Competitive courses
Every course can inherit the server default or explicitly use Casual or Competitive presentation.
Casual keeps the focus on personal improvement. Personal Best and Server Best can remain visible while public ranks, player names, Rival selection, and named leaderboard pressure stay hidden.
Competitive can expose shared ranks, player identities, leaderboard ghosts, Rival selection, rank movement, and record-holder information.
Both modes use the same race engine and timing system. The difference is what competition information is eligible and visible to players.
Commands
Player Commands
| Command | Description | Permission |
|---|---|---|
/elysky |
Opens the main Ely-sky menu. | elysky.use |
/elysky start <course-key> |
Starts an open course the player can access. Useful for NPCs, menus, and command-driven setups. | elysky.use |
/elysky restart |
Restarts the player's current course. | elysky.use |
/elysky leave |
Ends the player's current course. | elysky.use |
Alias: /esky
Course Authoring Commands
| Command | Description | Permission |
|---|---|---|
/elyskyadmin create <name> |
Creates a new closed course and begins at Start placement. | elysky.admin.author |
/elyskyadmin edit <name> |
Opens an existing course in the editor. | elysky.admin.author |
/elyskyadmin start |
Enters Start placement mode for the course being edited. | elysky.admin.author |
/elyskyadmin finish |
Enters Finish placement mode. | elysky.admin.author |
/elyskyadmin move <ring> |
Moves an existing timed ring. | elysky.admin.author |
/elyskyadmin move boost <number> |
Moves an existing Boost Portal. | elysky.admin.author |
/elyskyadmin insert <ring> |
Inserts a new timed ring before the selected ring. | elysky.admin.author |
/elyskyadmin remove <ring> |
Removes a timed ring. | elysky.admin.author |
/elyskyadmin remove boost <number> |
Removes a Boost Portal. | elysky.admin.author |
/elyskyadmin trail refresh [ring] |
Regenerates saved route guidance for the whole course or a selected ring segment. | elysky.admin.author |
/elyskyadmin rename <new name> |
Renames the course currently being edited. | elysky.admin.author |
/elyskyadmin set <description|icon|difficulty|permission|competition> <value> |
Changes metadata for the course currently being edited. | elysky.admin.author |
/elyskyadmin done |
Ends the current editor session. | elysky.admin.author |
Course Management Commands
| Command | Description | Permission |
|---|---|---|
/elyskyadmin list |
Lists authored courses and their current state. | elysky.admin.inspect |
/elyskyadmin open <name-or-key> |
Opens a valid course to players. | elysky.admin.control |
/elyskyadmin close <name-or-key> |
Closes a course while keeping its geometry and records intact. | elysky.admin.control |
/elyskyadmin test <name-or-key> |
Runs the course through the normal race engine without changing records or rewards. | elysky.admin.inspect |
/elyskyadmin validate [name-or-key] |
Validates course structure and guidance. The name may be omitted while editing. | elysky.admin.inspect |
/elyskyadmin delete <name-or-key> |
Archives and removes a course after confirmation. | elysky.admin.delete |
Record and Maintenance Commands
| Command | Description | Permission |
|---|---|---|
/elyskyadmin records inspect <course-key> <player> |
Shows a player's current-revision record and statistics. | elysky.admin.records |
/elyskyadmin records remove <course-key> <player> |
Removes a player's current record after confirmation and rebuilds the leaderboard. | elysky.admin.records |
/elyskyadmin records reset <course-key> |
Clears current-revision player records after confirmation. | elysky.admin.records |
/elyskyadmin records rebuild <course-key> |
Rebuilds the current leaderboard from stored ranked personal-best data. | elysky.admin.records |
/elyskyadmin diagnostics |
Creates a privacy-conscious Ely-sky support report. | elysky.admin.diagnostics |
/elyskyadmin reload |
Validates and reloads Ely-sky configuration. | elysky.admin.reload |
/elyskyadmin repair-index |
Rebuilds the derived player index. | elysky.admin.repair-index |
/elyskyadmin repair-leaderboard <course-key|all> |
Rebuilds one or all current course leaderboards. | elysky.admin.repair-index |
Admin alias: /esa
Permissions
| Permission | Description | Default |
|---|---|---|
elysky.use |
Allows normal use of Ely-sky courses and player commands. | Everyone |
elysky.competition.rank |
Allows eligible runs to enter shared competitive rankings when the course permits competition. | Everyone |
elysky.admin |
Grants all Ely-sky administration capabilities. | OP |
elysky.admin.command |
Allows access to the admin command root when another granted capability permits the requested action. This node alone does not grant an admin action. | False |
elysky.admin.author |
Allows course creation, metadata changes, and geometry editing. | OP |
elysky.admin.control |
Allows courses to be opened and closed to players. | OP |
elysky.admin.inspect |
Allows course listing, test runs, and validation. | OP |
elysky.admin.delete |
Allows confirmed course archival and removal. | OP |
elysky.admin.records |
Allows record inspection, removal, reset, and leaderboard rebuilding. | OP |
elysky.admin.diagnostics |
Allows Ely-sky diagnostic reports to be created. | OP |
elysky.admin.reload |
Allows Ely-sky configuration to be reloaded. | OP |
elysky.admin.repair-index |
Allows player-index and leaderboard repair operations. | OP |
Thank You
Thank you for checking out Ely-sky.
I built it because I wanted Elytra courses that could feel like they belonged inside a Minecraft world instead of being permanently built on top of it. The terrain, landmarks, caves, mountains, and builds are already interesting — Ely-sky is just there to give players a new reason to fly through them.
If you use it on your own server, I hope you have as much fun making routes as I had building the system behind them.
Happy flying.
Information
| Category | Gameplay |
|---|---|
| Published on | August 5, 2026 |
| License | All Rights Reserved |
| Downloads | 0 |
| Stars | 0 |
| Watchers | 0 |