# Apex Mobility

**The Ultimate Mobility Pack, featuring 3 core items:**

🪝 **Grappling Hook** — Swing through the air with real momentum, and get thrown by it when you let go.

🚠 **Zipline** — Fire at anything in sight and get pulled to it in a dead straight line.

🕷️ **Sticky Boots** — Climb any wall like a spider. Craft from any boots, enchantments intact.

Vanilla datapack, Minecraft 26.2. No mod needed.

---

## Install

Drop the folder into `<world>/datapacks/`. That is all — the pack registers itself
on the vanilla `tick` and `load` tags.

Then enable `resourcepack/`: it holds the item textures, so without it the six
grappling hooks and ziplines render as a missing model. It also adds French;
English is built into the datapack.

## Controls

| Key | Grappling Hook | Zipline |
| --- | --- | --- |
| Forward | Reel in (sprint = harder) | Speed up |
| Back | Pay out cable | Slow down |
| Left / right | Swing sideways | — |
| Right click | Re-hook mid-air | Re-hook mid-air |
| Space | Launch with your momentum | Launch with your momentum |
| Shift | Cut the rope | Cut the rope |

Launching throws you along your momentum — the faster you move, the further you
fly. It fires compressed-air bursts beneath you, the way ODM gear works in
*Attack on Titan*. Sneak instead cuts the rope: you drop from where you are,
with a second of slow falling, for when you just want off.

**Sticky Boots**: walk into a wall to climb, sneak to go back down.

## Recipes

| | Iron — 48 blocks, 480 uses | Diamond — 64 blocks, 1056 uses | Netherite — 80 blocks, 2112 uses |
| --- | --- | --- | --- |
| **Grappling Hook** | ![](docs/grappling_hook_tier1_recipe.png) | ![](docs/grappling_hook_tier2_recipe.png) | ![](docs/grappling_hook_tier3_recipe.png) |
| **Zipline** | ![](docs/zipline_tier1_recipe.png) | ![](docs/zipline_tier2_recipe.png) | ![](docs/zipline_tier3_recipe.png) |

| | Any boots, enchantments and damage preserved |
| --- | --- |
| **Sticky Boots** | ![](docs/iron_clim_boot_recipe.png) |

## Tuning

All constants are in `grapple/load.mcfunction`, in milliblocks per tick
(1000 = 1 block/tick): `#drag`, `#gravity`, `#vmax`, `#zip_speed`, `#reel_in`…

`#aim` sets the launch angle — the height the wind charge converges on, which is
what decides the arc. Measured at 0.8 blocks/tick release:

| `#aim` | Angle |
| --- | --- |
| 0 | ~61° |
| 1000 | ~45° |
| 1400 (default) | ~29° |

Negative fires from under you, launching nearly straight up. Launch power comes
from the number of wind charges, which stack: 1 below 1.0 block/tick, 2 up to
2.0, 3 beyond.

## Using it in a map

Items come from loot tables, so nothing has to be duplicated:

```
apex_mobility:grapple/item[_tier2|_tier3]
apex_mobility:zipline/item[_tier2|_tier3]
```

`loot give @s loot apex_mobility:grapple/item_tier2`, or reference the table from
a chest, trade or reward. Items are identified by custom data, so renaming one in
an anvil does not break it.

## How it works

On a cable you ride an invisible armor stand whose position the pack integrates
itself each tick, colliding against the player's width rather than the carrier's —
that is what keeps you out of walls at awkward angles.

Letting go destroys the carrier and hands you back to your own client, which is
smoother than any server-driven vehicle. A wind charge carries your momentum
across, because writing `Motion` onto a player does nothing: the server only
sends a velocity packet on a real knockback.

---

Part of a larger project, still to come. MIT licensed.
