SafeSpawn
No more rescue tickets. No more trapped players.
A lightweight join-protection plugin for Spigot, Paper & Folia 1.18 to 1.21+
❓ What It Does
A player logs out inside a finished event arena, the Nether roof, or a protected region, then comes back stuck, with /spawn and /home blocked. Staff has to log in and teleport them out by hand.
SafeSpawn fixes it silently. The moment a player joins a world you've flagged as restricted, they're teleported to safety before they can even open chat. No tickets, no frustrated players.
✨ Features
- Join-only trigger: fires only on player join. Nothing runs on quit, death, respawn, or world change.
- Folia ready: the same jar runs on Spigot, Paper, and Folia, automatically routing teleports and scheduling the correct way for each platform.
- Per-world whitelist: you choose exactly which worlds are restricted. Everything else is left alone.
- Case-insensitive world names: world_nether, World_Nether, and WORLD_NETHER all match.
- Three teleport modes: essentials sends the player to your EssentialsX spawn, cmi uses CMI's spawn, or custom teleports to exact coordinates you set. Essentials and CMI are dispatched from console, so teleports are instant and unaffected by teleport warmups.
- nLogin support: on servers with nLogin, the teleport waits until the player authenticates, so the login freeze and pre-auth location restore can't undo it. Auto-enables when nLogin is present.
- Smart fallback: if essentials or cmi mode fails or the plugin is missing (including on Folia, where Essentials isn't officially supported), it falls back to your custom coordinates instead of failing silently.
- Rich messages: the teleport message supports MiniMessage (HEX, gradients, hover, click) as well as legacy & color codes, auto-detected per message. Set it empty to disable.
- Auto-config migration: new config keys are added automatically on enable and reload, while your existing values are preserved.
- Configurable delay: a short tick delay before teleport prevents chunk-load glitches.
- Bypass permission: staff with safespawn.bypass join untouched, ideal for builders and admins.
- Hot reload: /safespawn reload applies changes instantly, no restart (Folia mode aside, see install).
- Tiny footprint: a ~16 KB jar, event-driven, with no constant background tasks. MiniMessage is shared through the server's library loader instead of bloating the jar.
Perfect for event arenas, Nether roof protection, decommissioned worlds, lobby servers, and custom dungeon maps.
⚙ Default Configuration
Code (YAML):
# Worlds where joining triggers an auto-teleport to safety.
# Case-insensitive. Add as many as you need.
restricted-worlds
:
- world_nether
- example_event_world
# Teleport mode:
# essentials -> EssentialsX spawn (requires EssentialsX)
# cmi -> CMI spawn (requires CMI)
# custom -> the coordinates below
mode
: essentials
# Used when mode = custom, OR as a fallback if essentials/cmi spawn fails.
custom-location:
world
: world
x
: 0.5
y
: 100.0
z
: 0.5
yaw
: 0.0
pitch
: 0.0
# Message sent to the player after teleport.
# Supports MiniMessage (HEX, gradients, hover, click) and legacy & color codes.
# Example: "<gradient:#55FF55:#00AAFF>Teleported to spawn for safety.</gradient>"
# Set to "" to disable.
message
:
"&aYou were teleported to spawn for safety."
# Ticks to wait after join before teleporting (20 ticks = 1 second).
teleport-delay-ticks
: 2
# Wait for a login plugin (e.g. nLogin) to authenticate the player before
# teleporting. Set to false to force teleport on join even with nLogin present.
wait-for-login
: true
Commands & Permissions
/safespawn reload
Reloads config.yml without restarting the server (safespawn.admin, default OP)
Permissions
- safespawn.admin (Default: OP)
Access to the reload command
- safespawn.bypass (Default: false)
Player is never auto-teleported
Compatibility
- Server software: Spigot, Paper, Purpur, Pufferfish, and Folia.
- Minecraft: 1.18.2 through 1.21+ (api-version: 1.18).
- Java: 17 or higher.
- EssentialsX: optional, used in essentials mode. Runs fine without it. On Folia, where Essentials isn't officially supported, essentials mode falls back to your custom location.
- CMI: optional, used in cmi mode.
- nLogin: optional. When installed, teleport fires after authentication. Toggle with wait-for-login.
- WorldGuard: fully compatible, and coexists with EssentialsSpawn, CMI, and custom hub plugins.
Installation
- Drop SafeSpawn.jar into your plugins/ folder.
- Start the server once to generate plugins/SafeSpawn/config.yml.
- Add your restricted worlds and pick a mode.
- Run /safespawn reload. You're live.
First start needs internet once to fetch the MiniMessage library into the server's shared libraries/ folder (cached afterward). Air-gapped server? Copy the libraries/net/kyori/ folder from any machine with internet.
Folia note: a full server restart is required the first time so Folia loads the plugin's support flag, a reload alone won't enable Folia mode.
No database. No external API. No setup wizard. Just works.
Support
Found a bug or have a feature request? Post in the Discussion tab with your server version, config, and any console errors. Please don't use the Reviews tab for bug reports.
Drop it in. Forget about it.
Crafted by zArrowTan