Better elevator icon

Better elevator -----

Elevator plugin, similar to a mod !



[​IMG]



BetterElevator
Real-block elevators with smooth motion and solid walls

What it does

Build a cabin out of any blocks you want, register floors by standing in them, and ride between them with proper vertical motion. Not a teleport — the cabin physically rises with you in it, complete with smooth animation and (if ProtocolLib is installed) solid walls so passengers can't walk out mid-ride.

Works on Spigot, Paper, and Folia. Same jar, no extra setup.


Features

  • Build any cabin shape — left/right-click two corners with a blaze rod, run /bet create <name>, done. Hollow, sparse, irregular — all valid.
  • Smooth motion — uses FallingBlock with server-controlled velocity. The player rides on top through vanilla physics (no teleport jank, no fall-through).
  • Solid walls via ProtocolLib — passengers can't walk through cabin walls horizontally. Implemented with client-only block-change packets, so the server world is never modified and non-passengers see nothing. Predictive packet scheduling compensates for network latency. Requires ProtocolLib (softdepend — works without, walls just won't be solid).
  • Per-elevator speed levels/bet speed <elevator> <level> switches between configurable speeds. Defaults: lv.1 = 2.5 b/s, lv.2 = 5, lv.3 = 10, lv.4 = 20. Persists per elevator.
  • Sign triggers — write [BET] / <elevator> / <floor> on a sign and right-click. Or [BET] / <elevator> / 5F:+6 to auto-register a new floor 6 blocks above the highest.
  • Button GUI — bind any block as a call-button with /bet bind <elevator>. Right-clicking opens a chest GUI with all floors.
  • Permission groups — limit max owned elevators, max cabin size, max speed per group. Configure in permissions/groups.yml.
  • World filtering — whitelist or blacklist worlds where elevators work.
  • Multi-backend storage — YAML, SQLite, or MySQL. SQL backends auto-create and migrate their schema.
  • i18n — bundled English and Traditional Chinese. Per-player locale (each player sees their own client locale). Drop in your own lang/<locale>.yml.
  • Mixed color syntax — every configurable message accepts MiniMessage tags, legacy &-codes, and hex (&#FFAA00 or #FFAA00) freely combined.
  • Auto config migration — missing keys from updates are merged into your live config (with their comments) on reload. Your existing values are never touched.


Compatibility

  • Minecraft 1.21+
  • Spigot / Paper / Folia (same jar)
  • Java 21+
  • Softdepend: ProtocolLib (for solid walls — optional)


Quick start

  1. Drop the jar into plugins/. Optionally drop ProtocolLib too.
  2. Restart the server.
  3. In-game: grab a blaze rod. Left-click one corner of your cabin, right-click the opposite corner.
  4. Stand inside the cabin. Run /bet create lobby.
  5. Place a sign somewhere with:
    Code (Text):

    [BET]
    lobby
    2F:+5
     
    Right-click it. The cabin moves 5 blocks up. Walk back in, right-click again to come back.


Commands

  • /bet create <name> — create an 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 the 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
  • /bet door add <elevator> — Enter door-tagging mode (then click two opposite corners with the blaze rod to define a door rectangle; repeat for multiple doors)
  • /bet door done — Exit door-tagging mode and save
  • /bet door clear <elevator> — Remove every door of this elevator
  • /bet door test <elevator> — Trigger one open → close cycle for testing

Permissions

  • betterelevator.admin — full management (default: op)
  • betterelevator.use — ride elevators via signs / buttons (default: true)
  • betterelevator.speed — change elevator speed (default: op)
  • betterelevator.group.<name> — per-group limits configured in permissions/groups.yml


Configuration highlights

Code (Text):

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 — block writes go through the region scheduler, entity work through the entity scheduler. Cross-region rides work.
  • Passenger detection — the cabin carries the player plus any mobs and dropped items in its AABB by default. Toggle via passengers.carry-mobs / passengers.carry-items.
  • Storage upgrades — SQL backends auto-add new columns on first run. No manual migration needed.
  • Existing setups — config keys from new versions are auto-merged into your existing config (with their comments). Just drop the new jar in.


Issues & suggestions

Open a discussion thread or PM. Reproducible bug reports get fixed fastest. Include server software / version, MC version, and a minimal cabin setup that triggers the issue.
Resource Information
Author:
----------
Total Downloads: 37
First Release: May 19, 2026
Last Update: May 25, 2026
Category: ---------------
All-Time Rating:
0 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings