Recherche Tp le Joueur au spawn quand il meurt

TheGabDooSan

Nouveau
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

Développeur en autodidacte
26 Septembre 2015
1 035
170
252
17
Strasbourg
Bonsoir,

Pourquoi ne pas passer par les évènements ?

Code:
@EventHandler
public void onPlayerRespawn(PlayerRespawnEvent e) {
   e.setSpawnLocation(kindOfMagicLocation);
}
Cordialement,
ShE3py.
 
Acheter minecraft moins cher

TheGabDooSan

Nouveau
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

Développeur en autodidacte
26 Septembre 2015
1 035
170
252
17
Strasbourg
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

Nouveau
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

Développeur en autodidacte
26 Septembre 2015
1 035
170
252
17
Strasbourg
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

Nouveau
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
9 239
1 950
362
23
Belgique
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
 

Pour voir moins d'annonces créez un compte ou connectez-vous.