xLimbo
作者:rebot | 分类:模组
Minecraft 版本: 1.18.2 1.19 1.19.1 1.19.2 1.19.3 1.19.4 1.20 1.20.1 1.20.2 1.20.3 1.20.4 1.20.5 1.20.6 1.21 1.21.1 1.21.2 1.21.3 1.21.4 1.21.5 1.21.6 1.21.7 1.21.8 1.21.9 1.21.10 1.21.11 26.1 26.1.1 26.1.2 26.2
平台: paper purpur
标签: management utility worldgen

A rock-solid fallback / limbo server plugin for Paper (Pufferfish) networks. When your
main server crashes, restarts or becomes unreachable, players routed to xLimbo land in an empty
void world — creative mode, flight enabled, on an unbreakable glass floor — so they stay connected
to the network instead of being disconnected. When the main server is back, they hop straight over
with /join (or automatically).
xLimbo is built to never go down: every code path fails safe. It never throws out of
enable/reload, never blocks the main thread, never disables itself on a bad config value, and no
single player action can lag, crash, grief or escape the sandbox.
✨ Features
- Void world owned by the plugin — created programmatically with an ultra-cheap generator
(one shared glass-floor layer per chunk; caves, decorations, structures, mobs and noise all
disabled). Ephemeral: autosave off, spawn chunks not kept loaded, optional safe reset on restart. - Join flow — players are put in creative + flight and async-teleported to a bounded,
spread-out random spawn (chunk preloaded first, so the join tick never blocks on generation). - World border bounds all roaming and caps total chunk generation; random spawns always land
inside it. /join— sends the player to the main server via the proxy (BungeeCordConnectmessage),
with configurable aliases, permission and a per-player cooldown to stop proxy spam.- Optional auto-join — send players back automatically after a delay.
- Optional action bar — repeating hint (component parsed once, reused each cycle).
- Message control — suppress join/quit/death broadcasts; optional custom join message and
chat clear. All text is MiniMessage and fully configurable. /xlimbo reload//xlimbo info— reload re-reads and re-validates config and re-applies live.
A few settings are restart-only:join-command.aliases,world.name,world.floor-yand
world.floor-block(the world/generator is fixed at creation).- Exploit resistance (all individually toggleable, safe defaults on): unbreakable floor, void
rescue, blocked portals, no liquids, no gravity blocks, no fire, no explosions, no mob spawns,
no redstone, no item drops, entity-item blocking + periodic cleanup, and an optional build-rate
guard against lag machines.
? Requirements
- Paper 1.18.2+ (or a fork like Pufferfish / Purpur)
- Java 21 runtime
? Install
- Grab a jar (see Downloads below) and drop it in your xLimbo server's
plugins/folder. - Start the server once — xLimbo creates the
xlimboworld and writes a defaultconfig.yml. - Edit
plugins/xLimbo/config.ymlto taste, then run/xlimbo reload(most settings apply live;
aliases,world.name,floor-yandfloor-blockneed a restart). - Point your proxy's fallback/xlimbo server at this instance and set
main-serverin the config to
the proxy name of the server you want/jointo send players to.
⌨️ Commands & permissions
| Command | Permission | Default | Description |
|---|---|---|---|
/join (+ aliases) |
xlimbo.join |
everyone | Connect to the main server. |
/xlimbo reload |
xlimbo.admin |
op | Reload + re-apply config live. |
/xlimbo info |
xlimbo.admin |
op | Show build/version + runtime status. |
⚙️ Recommended server-level tuning
Some performance and security tuning lives outside the plugin. For a fallback server that
should stay flat under load:
server.propertiesview-distance=4,simulation-distance=4(xLimbo also sets these per-world, but the global
default matters for any other world and for the initial spawn world).spawn-protection=0,allow-nether=false.online-mode=falseonly behind a proxy — and only with secure forwarding (below).
spigot.yml— lowerentity-tracking-rangevalues andmerge-radius; keep
view-distancein step.pufferfish.yml/ Paper'sconfig/paper-world-defaults.yml— tighten entity activation
ranges, disable ticking far from players, and keepmax-auto-save-chunks-per-ticklow
(xLimbo runs with autosave off anyway).- Proxy forwarding security (important): the
/join"Connect" plugin message can be spoofed
by clients if forwarding isn't secured. Configure Velocity modern forwarding (or a
BungeeCord IP-forwarding guard / firewall so only the proxy can reach the backend) so players
can't impersonate the proxy or move themselves around the network. The plugin cannot enforce
this — it must be set up on the proxy + server.
⚡ How it stays fast & stable
- Immutable settings snapshot. Config is parsed once into an immutable object (with MiniMessage
components pre-parsed) and swapped atomically on/xlimbo reload. No hot path — per-tick,
per-chunk or per-event — ever readsgetConfig()or re-parses MiniMessage. - O(1) generation. The generator writes one floor layer and disables every vanilla phase via
theshouldGenerate*hooks, with a single fixed biome. Chunk cost is flat no matter how far
players roam, and the world border caps how far that can go. - Async where it matters. Join teleports use
teleportAsyncaftergetChunkAtAsyncpreloads
the destination, so the join tick never blocks on generation. World creation happens once at
startup, never during ticks; the optional world reset uses an absolute path, never throws and
never runs while players are on. - Ephemeral world. Autosave off, spawn chunks not kept in memory, reduced view/simulation
distance — the world doesn't bloat disk or RAM. - Register only what's enabled. Listeners and tasks are only registered for enabled features,
and torn down/rebuilt cleanly on reload — no leaked tasks, no dead handlers. - Fail-safe everywhere.
onEnable/reloadare wrapped so they can never throw out; a failing
feature is logged and skipped rather than taking the server (and everyone on the network) down.
请登录后举报
暂无评论,抢个沙发吧~