Recherche Tp le Joueur au spawn quand il meurt

Discussion dans 'Support serveur et plugins' créé par TheGabDooSan, 16 Juin 2019.

  1. TheGabDooSan

    TheGabDooSan Nouveau

    Inscrit:
    5 Juin 2019
    Messages:
    9
    J'aime reçus:
    0
    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
     
  2. ShE3py

    ShE3py Développeur en autodidacte

    Inscrit:
    26 Septembre 2015
    Messages:
    954
    J'aime reçus:
    157
    Bonsoir,

    Pourquoi ne pas passer par les évènements ?

    Code:
    @EventHandler
    public void onPlayerRespawn(PlayerRespawnEvent e) {
       e.setSpawnLocation(kindOfMagicLocation);
    }
    Cordialement,
    ShE3py.
     
  3. TheGabDooSan

    TheGabDooSan Nouveau

    Inscrit:
    5 Juin 2019
    Messages:
    9
    J'aime reçus:
    0
    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
     
  4. ShE3py

    ShE3py Développeur en autodidacte

    Inscrit:
    26 Septembre 2015
    Messages:
    954
    J'aime reçus:
    157
    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^
     
    TheGabDooSan apprécie ceci.
  5. TheGabDooSan

    TheGabDooSan Nouveau

    Inscrit:
    5 Juin 2019
    Messages:
    9
    J'aime reçus:
    0
    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 ?
     
  6. ShE3py

    ShE3py Développeur en autodidacte

    Inscrit:
    26 Septembre 2015
    Messages:
    954
    J'aime reçus:
    157
    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);
       }
    }
     
  7. TheGabDooSan

    TheGabDooSan Nouveau

    Inscrit:
    5 Juin 2019
    Messages:
    9
    J'aime reçus:
    0
    C'est bon ca fonctionne merci je t'aime ca aide beaucoup !
     
  8. Detobel36

    Detobel36 Créateur de plugins (PhoenixRebirth)
    Support

    Inscrit:
    17 Août 2012
    Messages:
    9 144
    J'aime reçus:
    1 935
    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...

    <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
     

Partager cette page