So Minecraft introduced rocket-powered Elytras, which are the single-best thing to be in Minecraft since they introduced trees. These allow long-distance travel unlike anything practical previously - where a 20km journey would previously take potentially several hours of game time, now it can be accomplished in under 10 minutes.
Powering these elytras take firework rockets, which require resources to build. Thus it’s only practical to take a finite number of them on your journey, and wasting them is bad. Also, the elytra itself has a finite durability, and will wear out if you fly for too long (1724 seconds, if you have the Unbreaking 3 enchantment).
So the obvious question is, how far can you go? If firework rockets are expensive for you, but elytras are cheap, how do you optimize?
Somebody already built an elytra simulator based on a Minecraft snapshot: http://imgur.com/a/Vwyjl. I ported his code to Python and added a (approximate) firework rocket boost simulator.
I used the simulator to simulate a long-duration cruise profile which alternated between “climbing” and “cruising.” During the climbing phase, the player points up at some climb angle and fires two firework rockets, one after another. Once the rockets lose their effect, the player holds a fixed pitch until they hit a particular altitude for the cruise phase, at which point they return to the climb phase, repeating endlessly.
Here are some plots that I made:
The middle one shows the maximum range for an elytra with Unbreaking 3 plotted against various climb angles (the horizontal axis to the right) and various cruise angles (the horizontal axis to the left). All angles are positive for pitch down and negative for pitch up. This graph shows roughly that a max range of about 60km can be attained by climbing at 50 degrees up and cruising at 30 degrees down.
This is also shown in the bottom graph and in the top subgraph of the top graph, which plot the two dimensions of the 3d graph.
Note that the speed graph matches the range graph - this is because the durability (and thus max range) is based on the time aloft, so the faster you go the further you go (because elytras don’t wear out faster the faster they go).
The bottom subgraph of the top graph (Boost ratio vs. pitch) shows the number of meters flown per 2 rocket boosts, as a function of the cruise pitch. Unlike the others, this shows an optimum of 0 degrees cruise (flat), reaching around 600 meters per rocket (1200 per 2 rockets). This corresponds with the best glide angle, which is the angle you should hold if you need to maximize how far you go without any rockets.
Too long, didn’t read: If you have many fireworks, boost upwards at 50-60 degrees up (it increases the more you boost), and then glide downwards at 30 degrees down. If you have few fireworks, keep a flat glideslope.
My simulator code is at https://github.com/lkolbly/elytra-sim. Yes, it is a complete GitHub repo even though it’s just one file. I’m not really a fan of gists - you can’t use the git tool with them natively, and I like the git tool.