EasyTPA: A simple-to-use plugin for servers of all sizes.
The EasyTPA for your mc server
💡 Commercial Use: This plugin is free for individuals.
If you are a business or generate revenue with this plugin,
you must contact me to obtain authorization.
/tpa, /tpahere, /tpaccept, /tpdeny, /tpcancel, /tptoggle/home, /sethome, /delhome with per-player limit and permission tiers/warp, /setwarp, /delwarp, /warps with per-player ownership and clickable list/spawn, /setspawn/back (previous position or configurable death location)/rtp (alias /wild) with async chunk loading/tpreload/warpseasytpa-1.0.0.jar from the Releasesplugins/ folderplugins/EasyTPA/config.yml and messages.yml to your needs/tpreload (no restart needed)Required: Paper 1.21.4+ — Java 21+
config.yml# false → everyone can use player commands without permission
# true → checks permissions (compatible with LuckPerms and any Bukkit plugin)
permissions: false
# Delay before teleportation (seconds). 0 to disable.
# The player must not move, otherwise the teleportation is cancelled.
teleport-delay: 3
# Duration (seconds) before a TPA request expires
tpa-timeout: 60
# Global cooldown between two teleportations (seconds). 0 to disable.
# Bypass with: teleport.cooldown.bypass
teleport-cooldown: 30
# /back can bring back to death location if true
back-on-death: true
# Maximum number of homes per player
# If permissions: true, extendable via teleport.home.multiple.<number>
max-homes: 1
# Maximum number of warps per player
max-warps: 5
# Maximum radius (blocks) for /rtp
rtp-radius: 5000
# Minimum radius (blocks) for /rtp (avoids spawn)
rtp-min-radius: 100
# Maximum attempts to find a safe position for /rtp
rtp-max-attempts: 20
# Message prefix (MiniMessage format)
messages-prefix: "<dark_gray>[<aqua>EasyTPA<dark_gray>]<reset> "
| Command | Description | Required Permission |
|---|---|---|
/tpa <player> |
Request to teleport to a player | teleport.tpa |
/tpahere <player> |
Request a player to come to you | teleport.tpahere |
/tpaccept |
Accept a TPA request | teleport.tpaccept |
/tpdeny |
Deny a TPA request | teleport.tpdeny |
/tpcancel |
Cancel your pending request | teleport.tpcancel |
/tptoggle |
Enable/disable receiving requests | teleport.tptoggle |
/home [name] |
Teleport to a home | teleport.home |
/sethome [name] |
Set a home at your position | teleport.sethome |
/delhome [name] |
Delete a home | teleport.delhome |
/warp <name> |
Teleport to a warp | teleport.warp |
/setwarp <name> |
Create/edit a warp | teleport.setwarp |
/delwarp <name> |
Delete a warp | Warp owner or admin |
/warps |
List warps (clickable) | teleport.warps |
/spawn |
Teleport to spawn | teleport.spawn |
/setspawn |
Set the spawn | teleport.admin |
/back |
Return to previous position | teleport.back |
/rtp or /wild |
Safe random teleportation | teleport.rtp |
/tpreload |
Reload the configuration | teleport.admin |
If
permissions: falseinconfig.yml, all player commands are accessible without permission. Admin commands always require OP orteleport.admin.
| Permission | Description | Default |
|---|---|---|
teleport.tpa |
Use /tpa | true |
teleport.tpahere |
Use /tpahere | true |
teleport.tpaccept |
Use /tpaccept | true |
teleport.tpdeny |
Use /tpdeny | true |
teleport.tpcancel |
Use /tpcancel | true |
teleport.tptoggle |
Use /tptoggle | true |
teleport.home |
Use /home | true |
teleport.sethome |
Use /sethome | true |
teleport.delhome |
Use /delhome | true |
teleport.warp |
Use /warp | true |
teleport.warps |
Use /warps | true |
teleport.setwarp |
Create/edit a warp | op |
teleport.delwarp |
Delete any warp | op |
teleport.spawn |
Use /spawn | true |
teleport.back |
Use /back | true |
teleport.rtp |
Use /rtp | true |
teleport.cooldown.bypass |
Ignore teleportation cooldown | op |
teleport.home.multiple.<n> |
Have up to n homes (e.g. .5, .10) |
— |
teleport.admin |
All admin permissions | op |
messages.ymlAll messages use Adventure's MiniMessage format. You can use colors, effects, clickable links, and more.
Available placeholders:
| Placeholder | Description |
|---|---|
<player> |
A player's name |
<home> |
A home name |
<warp> |
A warp name |
<delay> |
Delay in seconds |
<max> |
Maximum limit |
<remaining> |
Remaining seconds (cooldown) |
<usage> |
Command syntax |
MiniMessage customization examples:
# Colors
teleport-success: "<green>Teleportation successful!"
# Gradient color
tpa-sent: "<gradient:#55ff55:#00aa00>Request sent to <player></gradient>"
# Bold text with emoji
teleport-pending: "<gold><bold>⏳ Teleporting in <delay>s... Don't move!</bold>"
# Clickable link (already used for TPA buttons)
tpa-received-buttons: "<green><click:run_command:/tpaccept>[Accept]</click>"
Requirements: Java 21, Maven 3.8+
git clone https://github.com/crafteria-dev/EasyTPA.git
cd EasyTPA
mvn package
The compiled JAR is located at target/easytpa-1.0.0.jar.
src/main/java/fr/easytpa/
├── EasyTPA.java # Main class, initialization
├── commands/ # One file per command (17 commands)
│ ├── TpaCommand.java
│ ├── TpaHereCommand.java
│ ├── TpAcceptCommand.java
│ ├── TpDenyCommand.java
│ ├── TpCancelCommand.java
│ ├── TpToggleCommand.java
│ ├── HomeCommand.java
│ ├── SetHomeCommand.java
│ ├── DelHomeCommand.java
│ ├── WarpCommand.java
│ ├── SetWarpCommand.java
│ ├── DelWarpCommand.java
│ ├── WarpsCommand.java
│ ├── SpawnCommand.java
│ ├── SetSpawnCommand.java
│ ├── BackCommand.java
│ ├── RtpCommand.java
│ └── TpReloadCommand.java
├── managers/ # Business logic and persistence
│ ├── ConfigManager.java # config.yml reader
│ ├── MessageManager.java # MiniMessage + prefix
│ ├── TpaManager.java # TPA requests, timeout, toggle
│ ├── TeleportDelayManager.java # Delay, anti-movement, cooldown
│ ├── CooldownManager.java # Global per-player cooldown
│ ├── HomeManager.java # Homes (homes.yml)
│ ├── WarpManager.java # Warps (warps.yml)
│ ├── SpawnManager.java # Spawn (spawn.yml)
│ └── BackManager.java # Previous position (in-memory)
├── listeners/
│ └── TeleportListener.java # PlayerMove, PlayerDeath, PlayerQuit
└── utils/
├── LocationUtils.java # YAML serialization, safety checks
└── PermissionUtils.java # Player/admin permission checks
src/main/resources/
├── plugin.yml # Command and permission declarations
├── config.yml # Main configuration
└── messages.yml # Customizable messages
/home spawn) calls TeleportDelayManager.scheduleTeleport()teleport-delay seconds)PlayerMoveEvent)executeTeleport(): saves the position for /back, calls player.teleportAsync() asynchronouslywarps.yml)teleport.admin or OP) can manage all warpsmax-warps limit is per player (not global)rtp-min-radius and rtp-radiusworld.getChunkAtAsync() to load chunks without blocking the serverrtp-max-attempts times if the position is not safeThis project is licensed under the Fair Core License (FCL).
For any commercial inquiry, contact ZO3N on GitHub.
💡 Usage Commercial : Ce plugin est gratuit pour les particuliers.
Si vous êtes une entreprise ou que vous générez des revenus avec ce plugin,
vous devez me contacter pour obtenir une autorisation.
/tpa, /tpahere, /tpaccept, /tpdeny, /tpcancel, /tptoggle/home, /sethome, /delhome avec limite par joueur et tiers de permissions/warp, /setwarp, /delwarp, /warps avec propriété par joueur et liste cliquable/spawn, /setspawn/back (position précédente ou lieu de mort configurable)/rtp (alias /wild) avec chargement async des chunks/tpreload/warpseasytpa-1.0.0.jar depuis les Releasesplugins/ de votre serveur Paperplugins/EasyTPA/config.yml et messages.yml selon vos besoins/tpreload (inutile de redémarrer)Requis : Paper 26.1.2+ — Java 25+
config.yml# false → tout le monde peut utiliser les commandes joueur sans permission
# true → vérifie les permissions (compatible LuckPerms et tout plugin Bukkit)
permissions: false
# Délai avant téléportation (secondes). 0 pour désactiver.
# Le joueur ne doit pas bouger, sinon la téléportation est annulée.
teleport-delay: 3
# Durée (secondes) avant expiration d'une demande TPA
tpa-timeout: 60
# Cooldown global entre deux téléportations (secondes). 0 pour désactiver.
# Contourne avec : teleport.cooldown.bypass
teleport-cooldown: 30
# /back peut ramener au lieu de mort si true
back-on-death: true
# Nombre maximum de homes par joueur
# Si permissions: true, extensible via teleport.home.multiple.<nombre>
max-homes: 1
# Nombre maximum de warps par joueur
max-warps: 5
# Rayon maximum (blocs) pour /rtp
rtp-radius: 5000
# Rayon minimum (blocs) pour /rtp (évite le spawn)
rtp-min-radius: 100
# Tentatives maximum pour trouver une position sûre pour /rtp
rtp-max-attempts: 20
# Préfixe des messages (format MiniMessage)
messages-prefix: "<dark_gray>[<aqua>EasyTPA<dark_gray>]<reset> "
| Commande | Description | Permission requise |
|---|---|---|
/tpa <joueur> |
Demander à se téléporter à un joueur | teleport.tpa |
/tpahere <joueur> |
Demander à un joueur de venir à vous | teleport.tpahere |
/tpaccept |
Accepter une demande TPA | teleport.tpaccept |
/tpdeny |
Refuser une demande TPA | teleport.tpdeny |
/tpcancel |
Annuler votre demande en attente | teleport.tpcancel |
/tptoggle |
Activer/désactiver la réception de demandes | teleport.tptoggle |
/home [nom] |
Se téléporter à un home | teleport.home |
/sethome [nom] |
Définir un home à votre position | teleport.sethome |
/delhome [nom] |
Supprimer un home | teleport.delhome |
/warp <nom> |
Se téléporter à un warp | teleport.warp |
/setwarp <nom> |
Créer/modifier un warp | teleport.setwarp |
/delwarp <nom> |
Supprimer un warp | Créateur du warp ou admin |
/warps |
Lister les warps (cliquables) | teleport.warps |
/spawn |
Se téléporter au spawn | teleport.spawn |
/setspawn |
Définir le spawn | teleport.admin |
/back |
Retourner à la position précédente | teleport.back |
/rtp ou /wild |
Téléportation aléatoire sûre | teleport.rtp |
/tpreload |
Recharger la configuration | teleport.admin |
Si
permissions: falsedansconfig.yml, toutes les commandes joueur sont accessibles sans permission. Les commandes admin nécessitent toujours OP outeleport.admin.
| Permission | Description | Défaut |
|---|---|---|
teleport.tpa |
Utiliser /tpa | true |
teleport.tpahere |
Utiliser /tpahere | true |
teleport.tpaccept |
Utiliser /tpaccept | true |
teleport.tpdeny |
Utiliser /tpdeny | true |
teleport.tpcancel |
Utiliser /tpcancel | true |
teleport.tptoggle |
Utiliser /tptoggle | true |
teleport.home |
Utiliser /home | true |
teleport.sethome |
Utiliser /sethome | true |
teleport.delhome |
Utiliser /delhome | true |
teleport.warp |
Utiliser /warp | true |
teleport.warps |
Utiliser /warps | true |
teleport.setwarp |
Créer/modifier un warp | op |
teleport.delwarp |
Supprimer n'importe quel warp | op |
teleport.spawn |
Utiliser /spawn | true |
teleport.back |
Utiliser /back | true |
teleport.rtp |
Utiliser /rtp | true |
teleport.cooldown.bypass |
Ignorer le cooldown de téléportation | op |
teleport.home.multiple.<n> |
Avoir jusqu'à n homes (ex: .5, .10) |
— |
teleport.admin |
Toutes les permissions admin | op |
messages.ymlTous les messages utilisent le format MiniMessage d'Adventure. Vous pouvez utiliser des couleurs, effets, liens cliquables, etc.
Placeholders disponibles :
| Placeholder | Description |
|---|---|
<player> |
Nom d'un joueur |
<home> |
Nom d'un home |
<warp> |
Nom d'un warp |
<delay> |
Délai en secondes |
<max> |
Limite maximale |
<remaining> |
Secondes restantes (cooldown) |
<usage> |
Syntaxe de la commande |
Exemples de personnalisation MiniMessage :
# Couleurs
teleport-success: "<green>Téléportation effectuée !"
# Couleur dégradée
tpa-sent: "<gradient:#55ff55:#00aa00>Demande envoyée à <player></gradient>"
# Texte en gras avec emoji
teleport-pending: "<gold><bold>⏳ Téléportation dans <delay>s... Ne bougez pas !</bold>"
# Lien cliquable (déjà utilisé pour les boutons TPA)
tpa-received-buttons: "<green><click:run_command:/tpaccept>[Accepter]</click>"
Prérequis : Java 25, Maven 3.8+
git clone https://github.com/crafteria-dev/EasyTPA.git
cd EasyTPA
mvn package
Le JAR compilé se trouve dans target/easytpa-1.0.0.jar.
src/main/java/fr/easytpa/
├── EasyTPA.java # Classe principale, initialisation
├── commands/ # Un fichier par commande (17 commandes)
│ ├── TpaCommand.java
│ ├── TpaHereCommand.java
│ ├── TpAcceptCommand.java
│ ├── TpDenyCommand.java
│ ├── TpCancelCommand.java
│ ├── TpToggleCommand.java
│ ├── HomeCommand.java
│ ├── SetHomeCommand.java
│ ├── DelHomeCommand.java
│ ├── WarpCommand.java
│ ├── SetWarpCommand.java
│ ├── DelWarpCommand.java
│ ├── WarpsCommand.java
│ ├── SpawnCommand.java
│ ├── SetSpawnCommand.java
│ ├── BackCommand.java
│ ├── RtpCommand.java
│ └── TpReloadCommand.java
├── managers/ # Logique métier et persistance
│ ├── ConfigManager.java # Lecture de config.yml
│ ├── MessageManager.java # MiniMessage + préfixe
│ ├── TpaManager.java # Demandes TPA, timeout, toggle
│ ├── TeleportDelayManager.java # Délai, anti-mouvement, cooldown
│ ├── CooldownManager.java # Cooldown global par joueur
│ ├── HomeManager.java # Homes (homes.yml)
│ ├── WarpManager.java # Warps (warps.yml)
│ ├── SpawnManager.java # Spawn (spawn.yml)
│ └── BackManager.java # Position précédente (mémoire)
├── listeners/
│ └── TeleportListener.java # PlayerMove, PlayerDeath, PlayerQuit
└── utils/
├── LocationUtils.java # Sérialisation YAML, vérification sécurité
└── PermissionUtils.java # Vérification permissions joueur/admin
src/main/resources/
├── plugin.yml # Déclaration commandes et permissions
├── config.yml # Configuration principale
└── messages.yml # Messages personnalisables
/home spawn) appelle TeleportDelayManager.scheduleTeleport()teleport-delay secondes)PlayerMoveEvent)executeTeleport() : sauvegarde la position pour /back, appel async player.teleportAsync()warps.yml)teleport.admin ou OP) peuvent gérer tous les warpsmax-warps est par joueur (pas globale)rtp-min-radius et rtp-radiusworld.getChunkAtAsync() pour charger les chunks sans bloquer le serveurrtp-max-attempts fois si la position n'est pas sûreCe projet est sous licence Fair Core License (FCL).
Pour toute demande commerciale, contactez ZO3N sur GitHub.