Compatibility
Minecraft: Java Edition
26.1.x
1.21.x
Platforms
Links
Tags
Creators
Details
Licensed ARR
Published last month
BetterElevator
Real-block elevators with smooth motion, solid walls, and per-elevator speed control. Folia and Paper safe.
Features
- Build your own cabin — select any shape with a blaze rod, run
/bet create <name>, done. No restrictive templates. - Smooth, real-block motion — the cabin moves as actual FallingBlocks with vanilla physics carrying you up/down. No teleport jank, no "fall through floor" bugs.
- Solid walls (via ProtocolLib) — passengers can't walk through cabin walls horizontally. Implemented with client-only block packets — server world untouched, non-passengers see nothing. Predictive packet scheduling compensates for network latency.
- Per-elevator speed levels —
/bet speed <elevator> <level>switches between configurable speeds (default 2.5 / 5 / 10 / 20 blocks/sec). Persisted per elevator. - Sign and button triggers — write
[BET] / <elevator> / <floor>on a sign and right-click rides. Or/bet bind <elevator>to turn any block into a call button (opens a floor-picker chest GUI). - Auto floor registration — writing
[BET] / <elevator> / 5F:+6on a sign auto-registers a new floor 6 blocks above the highest existing one. - Per-player permission groups — limit max cabin size, max elevators owned, max speed per group via
permissions/groups.yml. - World filtering — whitelist/blacklist worlds where elevators work.
- Multi-backend storage — YAML (default), SQLite, or MySQL. SQL backends auto-migrate schema.
- i18n — bundled
zh_twanden_us; each player sees their client locale automatically. Drop in your ownlang/<locale>.yml. - Mixed colour syntax — every message accepts MiniMessage tags, legacy
&6codes, and hex&#FFAA00/#FFAA00freely mixed. - Auto config migration — new config keys from updates are merged into your existing config on reload, with comments. Existing values are never overwritten.
Requirements
- Paper 1.21+ (or any Folia build)
- ProtocolLib (soft dependency — only needed for solid walls; without it the plugin runs fine and walls fall back to walk-through)
- Java 21+
Quick start
- Drop the jar in
plugins/. - Restart.
- Get a blaze rod. Left-click one corner of your cabin, right-click the opposite corner.
- Stand inside the cabin. Run
/bet create lobby. - Place a sign somewhere with: [BET] lobby 2F:+5
Right-click it. Cabin moves 5 blocks up.
Commands
| Command | Description |
|---|---|
/bet create <name> |
Create elevator from current selection + standing position |
/bet floor add <elevator> <floor> |
Register your current position as a floor |
/bet floor remove <elevator> <floor> |
Remove a floor |
/bet bind <elevator> |
Bind the block you're looking at as a call button |
/bet unbind |
Remove the call-button binding from the targeted block |
/bet goto <elevator> <floor> |
Force-call elevator to a floor |
/bet speed <elevator> <level> |
Switch speed level |
/bet list |
List all elevators |
/bet info <elevator> |
Inspect an elevator |
/bet delete <elevator> |
Delete an elevator |
/bet reset <elevator|all> |
Clear stuck ride state / orphan blocks |
/bet reload |
Reload config, lang, permissions |
Permissions
betterelevator.admin— full management (default: op)betterelevator.use— ride elevators via signs/buttons (default: true)betterelevator.speed— change elevator speed level (default: op)betterelevator.group.<name>— per-group limits inpermissions/groups.yml
Configuration highlights
motion:
default-blocks-per-second: 2.5
speed-levels: [2.5, 5.0, 10.0, 20.0]
passengers:
fake-wall-blocks: true # solid walls via ProtocolLib
fake-wall-lookahead-ticks: 2 # latency compensation
inride-friction: 0.6 # X/Z friction while riding
worlds:
mode: all # all / whitelist / blacklist
list: []
storage:
type: yaml # yaml / sqlite / mysql
Notes
Folia: the plugin uses per-region scheduling for block writes and entity work. Cross-region rides work.
Passenger limits: by default the cabin carries the player plus any mobs and dropped items inside it. Toggle via passengers.carry-mobs / passengers.carry-items.
Storage migrates from older versions automatically. Don't lose any existing data.
Bug reports and PRs welcome.


