BetterElevator
PluginLicenseRef-All-Rights-Reserved

BetterElevator

Elevator plugin, similar to a mod !

30
Downloads
0
Followers
1 months ago
Updated
📦
1
Versions

📖About BetterElevator

BetterElevator

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

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.