SaveWorldLocation – Smart World Group Teleport System ✅
Compatible with Minecraft 1.8 through 1.21.5 Fully tested on Spigot, Paper, and compatible forks.
What is SaveWorldLocation?
SaveWorldLocation is a lightweight yet powerful plugin that saves the
exact last location of players inside configurable
world groups (including X, Y, Z, yaw, and pitch).
Players can
return to their last saved location in a group using a command — perfect for menus, NPCs, or non-network setups.
This plugin is
ideal for multi-world servers, RPG setups, or any scenario where players travel between multiple worlds but should retain their location context.
Key Features
Saves player locations per custom world group (1 or more worlds per group)
️ Saves: world, X, Y, Z, yaw, pitch, and timestamp
Saves location on world change and logout
Teleport back to saved location using simple commands
⚙️ Configurable groups in config.yml
Optional auto-save every X seconds for data safety
Supports multiple languages via /languages/ folder
Designed for menus, GUIs, portals, and NPC interactions
️ Players require permission to use (non-OPs are restricted by default)
How Does It Work?
Imagine you have a group named
Survival with worlds: Survival1, Survival2, Survival3.
Whenever a player enters any of those worlds, their exact position is saved.
Later, using a command or menu button, the player can be teleported
back to their last location within that group, no matter which of the group’s worlds it was.
Perfect for servers that don't use BungeeCord but still want players to go back exactly where they left off!
️ Commands
/swl tp <player> <group>
→ Teleports a player to their saved location in that party.
/swl reload
→ Reloads plugin configuration and language files
️ Permissions
PermissionDescriptionDefault saveworldlocation.teleport Teleport other players to their last saved group location OP
saveworldlocation.teleport.self Teleport yourself to your own saved location OP
saveworldlocation.reload Reload plugin configuration OP
Note:
Regular players need permission nodes assigned. Only operators (OP) have permissions by default.
# If set to true, automatically saves player locations at regular intervals
auto_save: true
# Interval in seconds for auto-saving (only works if auto_save is true)
auto_save_interval_seconds: 60
# Shows debug logs in the console when saving locations (useful for developers)
debug_save_log: true
# World groups: define which worlds belong to the same group and the default world for teleporting
world_groups:
Survival: # Group name, can be renamed to anything you like
worlds: # List of worlds that belong to this group (names must match exactly with server world names)
- Survival
- Survival_nether
- Survival_the_end
default: Survival # Default world to teleport to if no saved location is found for the group
prefix: "&b[&eSaveWorldLocation&b] "
enabled-console: "&aPlugin enabled!"
disabled-console: "&cPlugin disabled!"
reload-config: "&aConfiguration reloaded successfully."
no-permission-reload: "&cYou do not have permission to reload the plugin."
no-permission-teleport: "&cYou do not have permission to use this command."
no-permission-teleport-others: "&cYou do not have permission to teleport other players."
usage-tp: "&eUsage: {label} tp <player> <group>"
player-not-connected: "&cPlayer '{player}' is not online."
group-not-exist: "&cWorld group '{group}' does not exist."
no-saved-location: "&eNo saved location found for player in group '{group}'. Teleporting to default world."
world-not-loaded: "&cWorld '{world}' is not loaded on the server."
tp-success: "&aPlayer {player} has been teleported to world '{world}'."
help-1: "&e/swl tp <player> <group> &f- Teleport a player to their last saved location"
help-2: "&e/swl reload &f- Reload plugin configuration"
auto-save-scheduled: "&aAuto-save scheduled every {interval} seconds."
auto-save-log: "&eAuto-saved locations for all online players."
error-create-locations: "&cCould not create locations.yml"
error-save-locations: "&cError saving locations.yml"
saved-location-log: "&bSaved location for {player} in group {group} at world {world}"
prefix: "&b[&eSaveWorldLocation&b] "
enabled-console: "&a¡Plugin habilitado!"
disabled-console: "&c¡Plugin deshabilitado!"
reload-config: "&aConfiguración recargada exitosamente."
no-permission-reload: "&cNo tienes permiso para recargar el plugin."
no-permission-teleport: "&cNo tienes permiso para usar este comando."
no-permission-teleport-others: "&cNo tienes permiso para ."
usage-tp: "&eUso: {label} tp <jugador> <grupo>"
player-not-connected: "&cEl jugador '{player}' no está conectado."
group-not-exist: "&cEl grupo de mundos '{group}' no existe."
no-saved-location: "&eNo se encontró una ubicación guardada para el jugador en el grupo '{group}'. Teletransportando al mundo por defecto."
world-not-loaded: "&cEl mundo '{world}' no está cargado en el servidor."
tp-success: "&aEl jugador {player} ha sido teletransportado al mundo '{world}'."
help-1: "&e/swl tp <jugador> <grupo> &f- Teletransporta a un jugador a su última ubicación guardada"
help-2: "&e/swl reload &f- Recarga la configuración del plugin"
auto-save-scheduled: "&aGuardado automático programado cada {interval} segundos."
auto-save-log: "&eUbicaciones guardadas automáticamente para todos los jugadores en línea."
error-create-locations: "&cNo se pudo crear locations.yml"
error-save-locations: "&cError al guardar locations.yml"
saved-location-log: "&bUbicación guardada para {player} en el grupo {group} en el mundo {world}"
prefix: "&b[&eSaveWorldLocation&b] "
enabled-console: "&aPlugin activé!"
disabled-console: "&cPlugin désactivé!"
reload-config: "&aConfiguration rechargée avec succès."
no-permission-reload: "&cVous n'avez pas la permission de recharger le plugin."
no-permission-teleport: "&cVous n'avez pas la permission d'utiliser cette commande."
no-permission-teleport-others: "&cVous n'avez pas la permission de téléporter d'autres joueurs."
usage-tp: "&eUtilisation : {label} tp <joueur> <groupe>"
player-not-connected: "&cLe joueur '{player}' n'est pas en ligne."
group-not-exist: "&cLe groupe de mondes '{group}' n'existe pas."
no-saved-location: "&eAucun emplacement sauvegardé trouvé pour le joueur dans le groupe '{group}'. Téléportation vers le monde par défaut."
world-not-loaded: "&cLe monde '{world}' n'est pas chargé sur le serveur."
tp-success: "&aLe joueur {player} a été téléporté vers le monde '{world}'."
help-1: "&e/swl tp <joueur> <groupe> &f- Téléporte un joueur à son dernier emplacement sauvegardé"
help-2: "&e/swl reload &f- Recharge la configuration du plugin"
auto-save-scheduled: "&aSauvegarde automatique programmée toutes les {interval} secondes."
auto-save-log: "&eEmplacements auto-sauvegardés pour tous les joueurs en ligne."
error-create-locations: "&cImpossible de créer locations.yml"
error-save-locations: "&cErreur lors de la sauvegarde de locations.yml"
saved-location-log: "&bEmplacement sauvegardé pour {player} dans le groupe {group} au monde {world}"
prefix: "&b[&eSaveWorldLocation&b] "
enabled-console: "&aPlugin aktiviert!"
disabled-console: "&cPlugin deaktiviert!"
reload-config: "&aKonfiguration erfolgreich neu geladen."
no-permission-reload: "&cDu hast keine Berechtigung, das Plugin neu zu laden."
no-permission-teleport: "&cDu hast keine Berechtigung, diesen Befehl zu verwenden."
no-permission-teleport-others: "&cDu hast keine Berechtigung, andere Spieler zu teleportieren."
usage-tp: "&eVerwendung: {label} tp <Spieler> <Gruppe>"
player-not-connected: "&cSpieler '{player}' ist nicht online."
group-not-exist: "&cDie Weltgruppe '{group}' existiert nicht."
no-saved-location: "&eKeine gespeicherte Position für den Spieler in der Gruppe '{group}' gefunden. Teleportiere zur Standardwelt."
world-not-loaded: "&cWelt '{world}' ist auf dem Server nicht geladen."
tp-success: "&aSpieler {player} wurde zur Welt '{world}' teleportiert."
help-1: "&e/swl tp <Spieler> <Gruppe> &f- Teleportiert einen Spieler zu seiner letzten gespeicherten Position"
help-2: "&e/swl reload &f- Plugin-Konfiguration neu laden"
auto-save-scheduled: "&aAutomatisches Speichern alle {interval} Sekunden geplant."
auto-save-log: "&eAutomatisch gespeicherte Positionen für alle online Spieler."
error-create-locations: "&cKonnte locations.yml nicht erstellen"
error-save-locations: "&cFehler beim Speichern von locations.yml"
saved-location-log: "&bPosition für {player} in der Gruppe {group} in Welt {world} gespeichert"
prefix: "&b[&eSaveWorldLocation&b] "
enabled-console: "&aPlugin abilitato!"
disabled-console: "&cPlugin disabilitato!"
reload-config: "&aConfigurazione ricaricata con successo."
no-permission-reload: "&cNon hai il permesso di ricaricare il plugin."
no-permission-teleport: "&cNon hai il permesso di usare questo comando."
no-permission-teleport-others: "&cNon hai il permesso di teletrasportare altri giocatori."
usage-tp: "&eUso: {label} tp <giocatore> <gruppo>"
player-not-connected: "&cIl giocatore '{player}' non è online."
group-not-exist: "&cIl gruppo di mondi '{group}' non esiste."
no-saved-location: "&eNessuna posizione salvata trovata per il giocatore nel gruppo '{group}'. Teletrasporto al mondo predefinito."
world-not-loaded: "&cIl mondo '{world}' non è caricato sul server."
tp-success: "&aIl giocatore {player} è stato teletrasportato al mondo '{world}'."
help-1: "&e/swl tp <giocatore> <gruppo> &f- Teletrasporta un giocatore alla sua ultima posizione salvata"
help-2: "&e/swl reload &f- Ricarica la configurazione del plugin"
auto-save-scheduled: "&aSalvataggio automatico programmato ogni {interval} secondi."
auto-save-log: "&ePosizioni auto-salvate per tutti i giocatori online."
error-create-locations: "&cImpossibile creare locations.yml"
error-save-locations: "&cErrore nel salvare locations.yml"
saved-location-log: "&bPosizione salvata per {player} nel gruppo {group} nel mondo {world}"
prefix: "&b[&eSaveWorldLocation&b] "
enabled-console: "&aПлагин включен!"
disabled-console: "&cПлагин отключен!"
reload-config: "&aКонфигурация успешно перезагружена."
no-permission-reload: "&cУ вас нет прав для перезагрузки плагина."
no-permission-teleport: "&cУ вас нет прав использовать эту команду."
no-permission-teleport-others: "&cУ вас нет разрешения на телепортацию других игроков."
usage-tp: "&eИспользование: {label} tp <игрок> <группа>"
player-not-connected: "&cИгрок '{player}' не в сети."
group-not-exist: "&cГруппа миров '{group}' не существует."
no-saved-location: "&eСохраненное местоположение игрока в группе '{group}' не найдено. Телепортация в мир по умолчанию."
world-not-loaded: "&cМир '{world}' не загружен на сервере."
tp-success: "&aИгрок {player} был телепортирован в мир '{world}'."
help-1: "&e/swl tp <игрок> <группа> &f- Телепортировать игрока к последнему сохраненному местоположению"
help-2: "&e/swl reload &f- Перезагрузить конфигурацию плагина"
auto-save-scheduled: "&aАвтосохранение запланировано каждые {interval} секунд."
auto-save-log: "&eАвтоматически сохраненные местоположения для всех онлайн игроков."
error-create-locations: "&cНе удалось создать locations.yml"
error-save-locations: "&cОшибка при сохранении locations.yml"
saved-location-log: "&bМестоположение сохранено для {player} в группе {group} в мире {world}"
prefix: "&b[&eSaveWorldLocation&b] "
enabled-console: "&aPlugin ativado!"
disabled-console: "&cPlugin desativado!"
reload-config: "&aConfiguração recarregada com sucesso."
no-permission-reload: "&cVocê não tem permissão para recarregar o plugin."
no-permission-teleport: "&cVocê não tem permissão para usar este comando."
no-permission-teleport-others: "&cVocê não tem permissão para teleportar outros jogadores."
usage-tp: "&eUso: {label} tp <jogador> <grupo>"
player-not-connected: "&cJogador '{player}' não está online."
group-not-exist: "&cO grupo de mundos '{group}' não existe."
no-saved-location: "&eNenhum local salvo encontrado para o jogador no grupo '{group}'. Teleportando para o mundo padrão."
world-not-loaded: "&cO mundo '{world}' não está carregado no servidor."
tp-success: "&aJogador {player} foi teleportado para o mundo '{world}'."
help-1: "&e/swl tp <jogador> <grupo> &f- Teleporta um jogador para seu último local salvo"
help-2: "&e/swl reload &f- Recarrega a configuração do plugin"
auto-save-scheduled: "&aAuto-salvamento agendado a cada {interval} segundos."
auto-save-log: "&eLocais auto-salvos para todos os jogadores online."
error-create-locations: "&cNão foi possível criar locations.yml"
error-save-locations: "&cErro ao salvar locations.yml"
saved-location-log: "&bLocal salvo para {player} no grupo {group} no mundo {world}"
All translation files are editable and located in the /languages/ folder.
Storage
Config: config.yml
Saved locations: locations.yml
Language files: /languages/
No database setup required!
⚡ Why Use SaveWorldLocation?
Players don’t lose their spot when changing worlds
Enables smooth multi-world navigation without a network
Ideal for GUI menus, custom NPCs, or hub teleporters
Extremely lightweight and easy to configure
No dependencies are required except if you want to assign permissions, in which case you need a permissions plugin like LuckPerms
Installation
Drop the .jar into your /plugins/ folder
Start the server to generate default files
Configure config.yml and messages.yml to your needs
Done! Use the commands to teleport between saved world group locations
Need Help? Found a bug or have a suggestion?
Feel free to reach out or open an issue on GitHub (coming soon).