Recherche Tp le Joueur au spawn quand il meurt

TheGabDooSan

Aventurier
5 Juin 2019
17
1
4
Bonjour, je me suis récemment mis au développement Java et j'ai créé un /setspawn | /spawn mais le problème est que quand le joueur meurt, il est téléporté au spawn du monde, et non au spawn que j'ai défini. J'aurais besoin de votre aide pour faire en sorte que le joueur soit tp au /spawn.

Que ce soit un code Java / Skript ou un plugin ça me convient ^^ .

Cordialement,

TheGabDooSan
 

ShE3py

Enbogueuse
Support
26 Septembre 2015
4 087
157
456
247
21
Mìlhüsa
Bonsoir,

Pourquoi ne pas passer par les évènements ?

Code:
@EventHandler
public void onPlayerRespawn(PlayerRespawnEvent e) {
   e.setSpawnLocation(kindOfMagicLocation);
}

Cordialement,
ShE3py.
 

TheGabDooSan

Aventurier
5 Juin 2019
17
1
4
Bonsoir,

Pourquoi ne pas passer par les évènements ?

Code:
@EventHandler
public void onPlayerRespawn(PlayerRespawnEvent e) {
   e.setSpawnLocation(kindOfMagicLocation);
}

Cordialement,
ShE3py.
J'ai essayé sauf que l'evenement s'active quand le joueur appuyes sur le bouton "Respawn" avant que le joueur ai "vraiment" respawn physiquement. Si jamais il y avais un moyen d'attendre par exemple 1 seconde avant que le joueur soit tp je suis preneur
 

ShE3py

Enbogueuse
Support
26 Septembre 2015
4 087
157
456
247
21
Mìlhüsa
Code:
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> e.getEntity().teleport(kindOfMagicLocation), 20L);

Il attendra 20 ticks (soit une seconde) avant de téléporter le joueur. N'hésite pas si tu souhaites plus d'informations sur un truc ^c^
 
  • J'aime
Reactions: TheGabDooSan

TheGabDooSan

Aventurier
5 Juin 2019
17
1
4
Merci beaucoup pour ta réponse mais je voulais juste savoir quoi remplacer par quoi (dsl je suis debutant)

Par exemple "plugin" je dois le remplacer par le nom de la classe / nom du plugin en jeu ?
 

ShE3py

Enbogueuse
Support
26 Septembre 2015
4 087
157
456
247
21
Mìlhüsa
Code:
public class MyPlugin {
   public static MyPlugin instance;
   
   public MyPlugin() {
       instance = this;
   }
   
   @Override
   public void onEnable() {
       // On enregistre nos évènements, détectés par l'annotation @EventHandler
       this.getServer().getPluginManager().registerEvents(this, this);
   }
   
   @EventHandler // On marque cette méthode afin d'indiquer à Bukkit que c'est le point d'entrée d'un évènement
   public void onPlayerRespawn(PlayerRespawnEvent e) {
       // On récupère le plugin
       MyPlugin plugin = MyPlugin.instance;
       
       // On récupère le serveur sur lequel le plugin se situe (hello bungeecord)
       Server server = plugin.getServer();
       
       // On récupère le planificateur du serveur
       BukkitScheduler scheduler = server.getScheduler();
       
       // On planifie une nouvelle tâche
       // Synchrone car si on modifie une entité hors de son thread et que celui-ci la tick crash
       scheduler.scheduleSyncDelayedTask(/* le plugin qui planifie la tâche */ MyPlugin.instance, /* la tâche à exécuter */ new Runnable() {
           @Override
           public void run() {
               // On téléporte le joueur de l'évènement - celui qui a ressuscité - à notre lieu magique
               e.getEntity().teleport(kindOfMagicLocation);
           }
       }, /* le délai, en ticks (1/20s), on suffixe L car c'est rigolo */ 20L);
   }
}
 

TheGabDooSan

Aventurier
5 Juin 2019
17
1
4
Code:
public class MyPlugin {
   public static MyPlugin instance;
  
   public MyPlugin() {
       instance = this;
   }
  
   @Override
   public void onEnable() {
       // On enregistre nos évènements, détectés par l'annotation @EventHandler
       this.getServer().getPluginManager().registerEvents(this, this);
   }
  
   @EventHandler // On marque cette méthode afin d'indiquer à Bukkit que c'est le point d'entrée d'un évènement
   public void onPlayerRespawn(PlayerRespawnEvent e) {
       // On récupère le plugin
       MyPlugin plugin = MyPlugin.instance;
      
       // On récupère le serveur sur lequel le plugin se situe (hello bungeecord)
       Server server = plugin.getServer();
      
       // On récupère le planificateur du serveur
       BukkitScheduler scheduler = server.getScheduler();
      
       // On planifie une nouvelle tâche
       // Synchrone car si on modifie une entité hors de son thread et que celui-ci la tick crash
       scheduler.scheduleSyncDelayedTask(/* le plugin qui planifie la tâche */ MyPlugin.instance, /* la tâche à exécuter */ new Runnable() {
           @Override
           public void run() {
               // On téléporte le joueur de l'évènement - celui qui a ressuscité - à notre lieu magique
               e.getEntity().teleport(kindOfMagicLocation);
           }
       }, /* le délai, en ticks (1/20s), on suffixe L car c'est rigolo */ 20L);
   }
}

C'est bon ca fonctionne merci je t'aime ca aide beaucoup !
 

Detobel36

Créateur de plugins (PhoenixRebirth)
Support
17 Août 2012
10 530
24
2 247
347
27
Bruxelles - Belgique
www.phoenix-rebirth.fr
Salut,

Juste en passant, si j'ai bien compris, le joueur se fait téléporté au spawn (potentiellement parce qu'un plugin l'y TP). Et ensuite ton plugin attend une seconde pour le TP à nouveau...
C'est pas très optimisé tout ça...

Enfin, je vois pas l’intérêt du coup d'attendre une seconde...

on suffixe L car c'est rigolo
<3 Ce n'est évidemment pas la bonne raison mais j'aime bien cette justification :p (surtout qu'un débutant n'a pas besoin de comprendre l’intérêt du L, donc c'est pas gênant).


Cordialement,
Detobel36