LimboManager

Virtual server manager with AFK and fallback server.

14

Quick challenge

How far can you run before the mobs catch you?

LimboManager

Want to support my work? You can do so by buying the plugin from BuiltByBit https://builtbybit.com/resources/limbomanager.105562/

LimboManager

LimboManager is a versatile, fully-featured management plugin for Velocity that leverages LimboManager to intuitively weave proxy-side virtual dimensions into your network.

🌟 Key Features

* Fully customizable: You can create virtual limbo servers, great for auth plugins, like LibreLogin * Fully customizable: Prevent players from getting kicked from your server when it restarts. * Fully customizable: Automatically detects inactive players and sends them to a dedicated AFK limbo * Fully customizable: Limbo API provided schema loading, supports schematics, worldedit schematics and structs. * Fully customizable: You can edit nearly all strings that the plugin uses, except for console messages, for better support quality, it's left as English.

📦 Dependencies

To use LimboManager, you must install the following Velocity plugins alongside it: * must * %%MD1%%

⌨️ Commands & Permissions

The core command root is `/limbomanager`.

| Command | Permission | Description | |---|---|---| | `/limbomanager help` | None | Lists available commands. | | `/limbomanager reload` | `limbomanager.command.reload` | Hot-reloads all config spaces and language files. | | `/limbomanager diagnostics` | `limbomanager.command.diagnostics` | Dumps precise runtime diagnostics (active spaces, AFK module health, aliases) into chat. | | `/limbomanager send [player] [limbo]` | `limbomanager.command.send` | Forcibly pull a specific player out of their active server and plunge them into an enabled Limbo space. |

*(Alias mappings defined in your configurations automatically assign proxy-level command intercepts for your users)*

Configuration

`config.yml`

```yml

LimboManager global configuration.

Increment this value when schema changes require user action after updates.

config-version: 1

Active language file name from LimboManager/language/<lang>.yml

lang: "en" ```

`afk.yml` ```yml

Enables AFK detection and AFK limbo routing.

enabled: true

settings:

Idle time in seconds before a player is moved to AFK.

idle-time: 300

Sweep interval in seconds used to check idle players.

check-interval: 30

Players with this permission bypass AFK handling.

exempt-permission: "limbomanager.exempt.afk"

Message shown when player is moved to AFK.

message: "&7You have been moved to AFK due to inactivity."

If false, AFK players are not sent to AFK limbo.

use-limbo: true

Enables verbose AFK debug logs.

debug: false

world:

Client view distance while in AFK limbo.

view-distance: 2

Server simulation distance while in AFK limbo.

simulation-distance: 2

Prevents players from falling immediately after joining AFK limbo.

disable-falling: true

Delay (ms) before disabling falling.

disable-falling-delay-ms: 800

Limbo world dimension (NETHER, OVERWORLD, THE_END).

dimension: "THE_END"

Game mode used inside AFK limbo.

gamemode: "SPECTATOR"

Fixed world time shown to AFK players.

world-time: 0

Whether AFK players see each other.

others-visible: true

Global light level for generated chunks.

light-level: 15 spawn:

Spawn X coordinate.

x: 0.0

Spawn Y coordinate.

y: 100.0

Spawn Z coordinate.

z: 0.0

Spawn yaw rotation.

yaw: 0.0

Spawn pitch rotation.

pitch: 0.0 schematic:

Enables schematic paste into AFK limbo world.

enabled: false

Built-in format type (SCHEMATIC, STRUCTURE, WORLDEDIT_SCHEM).

type: "SCHEMATIC"

Relative path inside /schematics.

path: "" offset:

Paste offset X.

x: 0

Paste offset Y.

y: 64

Paste offset Z.

z: 0

display: on-join:

One-time chat message sent when player enters AFK limbo.

chat: "&7You are now AFK." bossbar:

Enables rotating/static AFK bossbar.

enabled: true

Bossbar title text (or list for animation).

title: "&6AFK"

Bossbar color.

color: "YELLOW"

Bossbar style.

style: "SOLID"

Progress from 0.0 to 1.0 (or list for animation).

progress: 1.0

Animation step interval; -1 keeps first value static.

animation: -1 actionbar:

Enables repeating AFK actionbar.

enabled: true

Repeating actionbar text.

message: "&7Move to return to your server..."

Animation step interval; -1 keeps first value static.

animation: -1 title:

Enables repeating AFK title.

enabled: true

Title text (or list for animation).

title: "&6AFK"

Subtitle text (or list for animation).

subtitle: ""

Fade-in ticks for repeating title.

fade-in: 10

Fade-out ticks for repeating title.

fade-out: 20

Animation step interval; -1 keeps first value static.

animation: -1

sounds: away:

Sound played when a player is moved to AFK.

name: "entity.experience_orb.pickup"

Sound volume.

volume: 1.0

Sound pitch.

pitch: 1.0 back:

Sound played when a player returns from AFK.

name: "entity.player.levelup"

Sound volume.

volume: 1.0

Sound pitch.

pitch: 1.0 ```

`reconnect.yml` ```

Enables reconnect handling for kicked/disconnected players.

enabled: true

settings:

Regex matched against disconnect reason to trigger reconnect flow.

trigger-message: '((?i)^(server closed|server is restarting|multiplayer\.disconnect\.server_shutdown))+$'

Delay (ms) between ping checks while waiting for target server.

check-interval: 1000

Ping timeout (ms) for availability checks.

ping-timeout: 500

Delay (ms) before reconnecting after server is available.

join-delay: 2000

If false, reconnect runs without sending player to limbo.

use-limbo: true

Enables verbose reconnect debug logs.

debug: false

world:

Client view distance while in reconnect limbo.

view-distance: 2

Server simulation distance while in reconnect limbo.

simulation-distance: 2

Prevents players from falling immediately after joining reconnect limbo.

disable-falling: true

Delay (ms) before disabling falling.

disable-falling-delay-ms: 800

Limbo world dimension (NETHER, OVERWORLD, THE_END).

dimension: "THE_END"

Game mode used inside reconnect limbo.

gamemode: "SPECTATOR"

Fixed world time shown to players.

world-time: 0

Whether reconnect-limbo players are visible to each other.

others-visible: true

Global light level for generated chunks.

light-level: 15 spawn:

Spawn X coordinate.

x: 0.0

Spawn Y coordinate.

y: 100.0

Spawn Z coordinate.

z: 0.0

Spawn yaw rotation.

yaw: 0.0

Spawn pitch rotation.

pitch: 0.0 schematic:

Enables schematic paste into reconnect limbo world.

enabled: false

Built-in format type (SCHEMATIC, STRUCTURE, WORLDEDIT_SCHEM).

type: "SCHEMATIC"

Relative path inside /schematics.

path: "" offset:

Paste offset X.

x: 0

Paste offset Y.

y: 64

Paste offset Z.

z: 0

commands:

Allow-list of commands executable while reconnecting.

- "newgen" - "oldgen"

display: on-join:

One-time chat message sent when player enters reconnect limbo.

chat: "&cAll servers are offline." bossbar:

Enables rotating/static reconnect bossbar.

enabled: true

Bossbar title text (or list for animation).

title: "&cFallback Limbo"

Bossbar color.

color: "RED"

Bossbar style.

style: "SOLID"

Progress from 0.0 to 1.0 (or list for animation).

progress: 1.0

Animation step interval; -1 keeps first value static.

animation: -1 actionbar:

Enables repeating reconnect actionbar.

enabled: true

Repeating actionbar text

message: "&7Reconnecting..."

Animation step interval; -1 keeps first value static.

animation: -1 title:

Enables repeating reconnect title.

enabled: true

Title text (or list for animation).

title: "&cServer Offline"

Subtitle text (or list for animation).

subtitle: "&7Attempting reconnect..."

Fade-in ticks for repeating title.

fade-in: 0

Fade-out ticks for repeating title.

fade-out: 0

Animation step interval; -1 keeps first value static.

animation: -1

sounds: waiting:

Sound played while waiting for target server to come online.

name: "entity.experience_orb.pickup"

Sound volume.

volume: 1.0

Sound pitch.

pitch: 1.0 connecting:

Sound played when reconnect handoff begins.

name: "entity.player.levelup"

Sound volume.

volume: 1.0

Sound pitch.

pitch: 1.0 ```

`lang.yml` ```yml common: no-permission: "&cYou do not have permission."

command: reload: success: "&aLimboManager reloaded." failed: "&cFailed to reload LimboManager. Check console." diagnostics: collecting: "&eCollecting diagnostics..." line: "&7{line}" help: |- &eLimboManager commands: &7/limbomanager reload &8- &fReload all config files &7/limbomanager diagnostics &8- &fShow runtime diagnostics &7/limbomanager send <player> <limbo> &8- &fSend a player to an enabled virtual limbo send: usage: "&cUsage: /limbomanager send <player> <limbo>" player-offline: "&cPlayer '&f{player}&c' is not online." unknown-limbo: "&cUnknown or disabled limbo '&f{limbo}&c'. Only enabled virtual limbos are allowed." success: "&aSent &f{player} &ato limbo &f{limbo}&a." target-notice: "&eYou were sent to limbo &f{limbo}&e by an administrator." no-enabled-limbos: "&7No enabled virtual limbo configs are loaded." enabled-limbos: "&7Enabled limbos: &f{limbos}"

player: command-blocked: "&cThis command is blocked while you are in limbo."

diagnostics: service-not-initialized: "LimboManager service is not initialized yet." info: |- LimboManager diagnostics: - virtual limbos: {virtual_count} - alias routes: {alias_count} - reconnect module: {reconnect_enabled} - afk module: {afk_enabled} - active limbo sessions: {active_count} - pending initial aliases: {pending_count} - ViaVersion: {via_status} ({via_details}) - LibreLogin: {libre_status} ({libre_details}) - LibreLogin: {libre_status} ({libre_details}) ```

`server.yml` ```

Enables or disables this virtual limbo profile.

enabled: false

settings:

Optional alias matched against target server names to override routing.

alias: ""

Enables extra debug logging for this profile.

debug: false

world:

Client view distance while in limbo.

view-distance: 2

Server simulation distance while in limbo.

simulation-distance: 2

Prevents players from falling immediately after joining limbo.

disable-falling: true

Delay (ms) before disabling falling.

disable-falling-delay-ms: 800

Limbo world dimension (NETHER, OVERWORLD, THE_END).

dimension: "THE_END"

Game mode used inside limbo.

gamemode: "SPECTATOR"

Fixed world time shown to players.

world-time: 0

Whether other limbo players are visible.

others-visible: true

Global light level for generated chunks.

light-level: 15 spawn:

Spawn X coordinate.

x: 0.0

Spawn Y coordinate.

y: 100.0

Spawn Z coordinate.

z: 0.0

Spawn yaw rotation.

yaw: 0.0

Spawn pitch rotation.

pitch: 0.0 schematic:

Enables schematic paste into limbo world.

enabled: false

Built-in format type (SCHEMATIC, STRUCTURE, WORLDEDIT_SCHEM).

type: "SCHEMATIC"

Relative path inside /schematics.

path: "" offset:

Paste offset X.

x: 0

Paste offset Y.

y: 64

Paste offset Z.

z: 0

Optional allow-list of commands that remain executable in this limbo.

commands: - "hub" - "lobby" - "queue"

Optional display configuration for join/bossbar/actionbar/title.

display: on-join:

One-time chat message sent when player enters limbo.

chat: "&cAll servers are offline." title:

Enables one-time join title.

enabled: true

Main join title text.

title: "&cHey there!"

Join subtitle text.

subtitle: "&7Why are you here?"

Title fade-in ticks.

fade-in: 10

Title stay ticks.

stay: 80

Title fade-out ticks.

fade-out: 20 actionbar:

Enables one-time join actionbar.

enabled: false

Join actionbar text.

message: "Something cool" bossbar:

Enables rotating/static bossbar while in limbo.

enabled: true

Bossbar title text (or list for animation).

title: "&cFallback Limbo"

Bossbar color (PINK, BLUE, RED, GREEN, YELLOW, PURPLE, WHITE).

color: "RED"

Bossbar style (SOLID, SEGMENTED_*).

style: "SOLID"

Progress from 0.0 to 1.0 (or list for animation).

progress: 1.0

Animation step interval; -1 keeps first value static.

animation: -1 actionbar:

Enables repeating actionbar while in limbo.

enabled: false

Repeating actionbar text

message: "&7Reconnecting..."

Animation step interval; -1 keeps first value static.

animation: -1 title:

Enables repeating title while in limbo.

enabled: false

Title text (or list for animation).

title: "&cServer Offline"

Subtitle text (or list for animation).

subtitle: "&7Attempting reconnect..."

Fade-in ticks for repeating title.

fade-in: 0

Fade-out ticks for repeating title.

fade-out: 0

Animation step interval; -1 keeps first value static.

animation: -1 ```

ADS