Spawn

Set a server-wide spawn point with first-join teleport, respawn control, bed override logic, and full warmup/cooldown support.

Commands

CommandDescriptionPermission
/spawn [player]Teleport to the server spawn. With admin permission, you can specify another player to teleport them to spawn.essentialsc.spawn
/setspawnSet the server spawn to your current location. Saves to spawn.yml immediately.essentialsc.setspawn

Configuration

All spawn settings live under the spawn: section in config.yml.

spawn:
  # Seconds a player must wait between uses of /spawn.
  # Set to 0 to disable. Bypassed by: essentialsc.spawn.admin
  cooldown: 5

  # Seconds the player must stand still before being teleported.
  # Set to 0 to teleport instantly. Bypassed by: essentialsc.spawn.admin
  warmup: 3

  # Teleport players to spawn the first time they join the server.
  teleport-on-first-join: true

  # Play particles on arrival.
  particles: true

  # Play sounds during the spawn teleport.
  sounds: true

  # Cancel the teleport if the player moves during the warmup.
  cancel-on-movement: true

  # Whether players should be teleported to the configured spawn on respawn.
  teleport-on-respawn: true

  # Whether beds can override the spawn location.
  # If false, players will always respawn at the configured spawn.
  allow-beds-to-override: true
Bed override logic When teleport-on-respawn: true and allow-beds-to-override: true, the priority is: bed spawn point → configured spawn → world spawn. If allow-beds-to-override: false, beds are ignored and everyone respawns at the configured spawn. Set teleport-on-respawn: false to use vanilla Minecraft respawn behavior entirely.

Permissions

PermissionDescriptionDefault
essentialsc.spawnTeleport to the server spawntrue
essentialsc.spawn.adminBypass spawn cooldowns/warmup and teleport others to spawnop
essentialsc.setspawnSet the server spawn locationop

Storage

The spawn location is stored in plugins/EssentialsC/spawn.yml as a flat YAML file:

world: world
x: 0.5
y: 64.0
z: 0.5
yaw: 90.0
pitch: 0.0

Unlike homes and warps, spawn does not use SQLite. The file is read on startup and cached in memory. It is rewritten immediately when /setspawn is executed. If the file is missing or the world is unloaded, spawn falls back to the world's default spawn point.

Teleport Mechanics

When you run /spawn, the teleport goes through these checks:

  1. Spawn existence — The spawn location must be set. If not, the command fails with an error message.
  2. Cooldown — If you have used /spawn within the cooldown period (default 5s), you must wait. Bypassed by essentialsc.spawn.admin.
  3. Warmup — If warmup is enabled (default 3s), you must stand still. Moving cancels the teleport if cancel-on-movement is true. Countdown ticks play a rising-pitch pling sound during the last 3 seconds.
  4. Async teleport — The actual teleport is performed asynchronously (safe for Folia).
  5. Effects — Portal and End Rod particles spawn at the destination. An Enderman teleport sound plays.

Quitting the server while a warmup is active automatically cancels the pending teleport and clears all tracking state.

First Join

When teleport-on-first-join: true, new players are teleported to spawn automatically on their first server join. The check uses the player's total playtime — if it is zero, they are considered a new player and teleported. This only fires once per player lifetime.

First join message The join-leave-messages.first-join config setting controls the broadcast message when a player joins for the first time. This is separate from spawn teleport but commonly used together. Supports MiniMessage and placeholders.

Respawn Behavior

EssentialsC hooks into the PlayerRespawnEvent to control where players respawn after death. The behavior depends on your config:

teleport-on-respawnallow-beds-to-overrideResult
false(ignored)Vanilla behavior — bed spawn if set, otherwise world spawn
truetrueBed spawn wins if set → configured spawn → world spawn
truefalseAlways respawn at the configured spawn, beds are ignored

If the configured spawn world is unloaded or the spawn file is corrupted, the plugin falls back to the world's default spawn point silently.

Admin Features

Admins with essentialsc.spawn.admin have extended spawn capabilities:

  • Teleport others/spawn <player> teleports any online player to spawn
  • Bypass cooldown — Admin teleports have no cooldown delay
  • Bypass warmup — Admin teleports are instant, no standing still required

Join and Leave Messages

EssentialsC replaces vanilla join/leave messages with customizable MiniMessage versions:

join-leave-messages:
  enabled: true
  join: "[<#70F40B>+] <#A3F863> joined the game"
  leave: "[<#F52727>-] <#FA8F8F> left the game"
  hide-vanished: true
  first-join: "<#F5CF27>** Welcome! <#F8DC63> just joined for the first time!"

Available placeholders: <player>, <displayname>. Vanished players are hidden from join/leave broadcasts if hide-vanished: true.

Troubleshooting

"Spawn location is not set"

No spawn has been configured. Run /setspawn at the desired location. The command requires essentialsc.setspawn.

Players not teleporting on first join

Ensure spawn.teleport-on-first-join: true is set in config.yml. Also check that the spawn world is loaded before players join — if the world is loaded by a plugin after EssentialsC initializes, the spawn may not resolve.

Beds overriding spawn when they shouldn't

Set spawn.allow-beds-to-override: false and run /essc reload. Players will now always respawn at the configured spawn regardless of bed placement.

Spawn world was deleted

If the world stored in spawn.yml no longer exists, the plugin falls back to the default world spawn. Run /setspawn in the new world to update the location.

Warmup sounds not playing

Check that spawn.sounds: true is set in config. The pling sound during warmup and the Enderman teleport on arrival both require this to be enabled.

Cooldown not resetting

Cooldowns are stored in-memory and reset on server restart. If a player reports cooldown issues, check that spawn.cooldown is not set to an unexpectedly high value.

Next Steps