Sueta

BetterElevator

0.3.0

Elevator plugin, similar to a mod !

·Plugin
  1. 0.3.0latestBetterElevator 0.3.0May 18, 2026

    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:+6 on 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_tw and en_us; each player sees their client locale automatically. Drop in your own lang/<locale>.yml. - Mixed colour syntax — every message accepts MiniMessage tags, legacy &6 codes, and hex &#FFAA00 / #FFAA00 freely 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

    1. Drop the jar in plugins/. 2. Restart. 3. Get 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: [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 in permissions/groups.yml ---

    Configuration highlights

    ```yaml 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.
    106 downloads

Similar projects

Plugin →