File Details
EssentialsPlus-1.18.0.jar
- R
- Apr 20, 2026
- 1.18 MB
- 280
- Early Access
File Name
EssentialsPlus-1.18.0.jar
Supported Versions
- Early Access
📝 Changelog
Version 1.18.0
📦 Spawn Migration Note This update automatically migrates your existing spawn data. The migration has been thoroughly tested, everything should continue to work as before. It's still worth a quick check after updating to confirm your spawns behave as expected. New permissions have been added for the new commands introduced in this update. All existing spawn permissions remain unchanged, no adjustments needed there.
✨ Improvements:
🌟 Spawn System Overhaul
- What this means for server admins: You can now control spawn behavior much more precisely, without custom workarounds.
- What this means for players: Teleports feel more predictable because spawn targets are resolved consistently.
/setspawnsets the main spawn by default./setspawn worldsets the world spawn for the executing player's current world./setspawn firstjoinand/setspawn group <group>are available for advanced targets.- Added structured deletion command family:
/delspawn/delspawn main/delspawn world <world>/delspawn firstjoin/delspawn group <group>
- Added
/spawn main, optional player support for/spawn,/spawn main,/spawn world, and/spawn list. - Added dedicated permission for world spawn teleport:
essentialsplus.spawn.world.self. - Added
/spawn firstjoin— teleports directly to the configured first-join spawn (permission:essentialsplus.spawn.firstjoin.self). - Added
/spawn group [group]— teleports to your own group's spawn; respects theinheritedGroupSpawnssetting (permission:essentialsplus.spawn.group.self).
🧠 Unified Spawn Resolver (Order-Based)
/spawn,/spawn <player>,/spawn all, join teleport, first-join handling, and death teleport now share one resolver pipeline.- Resolution runs through ordered fallback lists and uses the first matching target.
- You can now decide where players should go:
- when they use
/spawn - when they join the server
- when they respawn after death
- when they use
- Practical selection rule:
/spawn*usesspawn.spawnCommandOrder- real joins use
spawn.joinTeleportOrder - death/respawn uses
spawn.deathTeleportOrder - matching
spawn.worldOverrides[*].orderreplaces the global order for that world
- Small examples:
spawnCommandOrder = ["GROUP", "MAIN", "WORLD"]→ if no group spawn exists but main spawn exists,/spawnpicks MAIN.joinTeleportOrder = ["FIRSTJOIN", "DEFAULT"]→ if it is not the first-join, join handling falls through to Hytale default via DEFAULT.deathTeleportOrder = ["WORLD", "MAIN", "DEFAULT"]→ after death, players go to the world spawn first; if not configured, they fall back to main spawn.
⚙️ New Spawn Configuration Block (
spawn.*)- Admin benefit: You can implement server-specific policies like “new players go to tutorial spawn” or “respawns
stay world-local”.
- Added order lists:
spawn.spawnCommandOrderspawn.joinTeleportOrderspawn.deathTeleportOrder
- Set
joinTeleportOrderdefault to["FIRSTJOIN", "DEFAULT"]. - Set
deathTeleportOrderdefault to["DEFAULT"]. - Added explicit handoff step
DEFAULT(lets Hytale handle the spawn behavior). - Added per-world override entries via
spawn.worldOverrides. - Added a default example entry for
worldOverridesusing a non-existing world name.
- Added order lists:
- Admin benefit: You can implement server-specific policies like “new players go to tutorial spawn” or “respawns
stay world-local”.
🧩 Implicit World Spawn Creation
- Missing world spawns are now auto-created from the world's Hytale default spawn and persisted to
spawns.json. - Trigger points:
/spawn world [world]usage- startup initialization for currently loaded worlds
- world-step checks during order-based spawn resolution
- Set
spawn.autoCreateWorldSpawnstofalseto disable this behavior and keep full manual control over all spawn entries.
- Missing world spawns are now auto-created from the world's Hytale default spawn and persisted to
Example (config.json excerpt):
"spawn": {
"spawnCommandOrder": ["GROUP", "MAIN", "WORLD"],
"joinTeleportOrder": ["FIRSTJOIN", "DEFAULT"],
"deathTeleportOrder": ["DEFAULT"],
"worldOverrides": [
{
"worldName": "example-world-name",
"order": ["WORLD"]
}
],
"inheritedGroupSpawns": true,
"autoCreateWorldSpawns": true
}