Invité Posté : 31 mars 2017 Bonjour, Il y a quelques semaines je suis venu ici pour vous demander si il exister un "wait" en Java. Aujourd'hui je réitère ma demande puisque la solution apporter par @SwiKZiiK n'est fonctionne plus (ou n'est plus d'actualité ) puisque par tout les moyens que ce soit, il y a toujours une erreur. Donc, qui à une vrai solution (car je veux l'utiliser dans un event et je sais que c'est possible vu qu'en skript cela marche ) ? Pour ce qui veulent, j'ai la fameuse vague rouge en dessous de "scheduleSyncDelayedTask". Mon code : [spoiler=Listener avec la tentative de wait] package com.swencake.hubcore; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.GameMode; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; public class Listeners implements Listener { @EventHandler public void onJoin(PlayerJoinEvent onJoin) { Player player = onJoin.getPlayer(); //Delai int seconds = 1; // secondes Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() { @Override public void run() { onJoin.setJoinMessage(ChatColor.DARK_GRAY + "[" + ChatColor.RED + "+" + ChatColor.DARK_GRAY + "] " + ChatColor.BLUE + player.getName()); player.performCommand("hub"); player.setHealth(20.0); player.setFoodLevel(20); player.setFireTicks(0); player.setLevel(0); player.sendMessage(ChatColor.BOLD + "" + ChatColor.DARK_GRAY + "--------------------"); player.sendMessage(ChatColor.BLUE + "Bienvenue sur " + ChatColor.GOLD + "Legends " + ChatColor.BLUE + "!"); player.sendMessage(ChatColor.BOLD + "" + ChatColor.DARK_GRAY + "--------------------"); if(player.hasPermission("mod.hub.bypass")) { player.setGameMode(GameMode.CREATIVE); } else { player.setGameMode(GameMode.ADVENTURE); player.getInventory().clear(); } } }, (seconds * 20)); } @EventHandler public void onQuit(PlayerQuitEvent onQuit) { Player player = onQuit.getPlayer(); onQuit.setQuitMessage(ChatColor.DARK_GRAY + "[" + ChatColor.RED + "-" + ChatColor.DARK_GRAY + "] " + ChatColor.BLUE + player.getName()); } } Partager ce message Lien à poster Partager sur d’autres sites
Xamez 72 Répondu : 31 mars 2017 Salut, Ici c'est du skript, pas du java ... Partager ce message Lien à poster Partager sur d’autres sites
Invité Répondu : 31 mars 2017 Tu dois refermer la boucle en définissant le Delayed comme celà : }, secondesL, 20L); // Remplaçe secondes par le nombre de ticks que tu veux 1 secondes = 20 ticks Partager ce message Lien à poster Partager sur d’autres sites
Invité Répondu : 31 mars 2017 Tu dois refermer la boucle en définissant le Delayed comme celà : }, secondesL, 20L); // Remplaçe secondes par le nombre de ticks que tu veux 1 secondes = 20 ticks Effectivement, je n'avais pas vu. Merci :) EDIT : BAh enfait, ça ne change rien :( [spoiler=Erreur d'eclipse -->] The method scheduleSyncDelayedTask(Plugin, Runnable, long) in the type BukkitScheduler is not applicable for the arguments (Listeners, new Runnable(){}, int) Salut, Ici c'est du skript, pas du java ... Et donc ? Partager ce message Lien à poster Partager sur d’autres sites
Skripting 605 Répondu : 31 mars 2017 Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Partager ce message Lien à poster Partager sur d’autres sites
Invité Répondu : 31 mars 2017 Hum, merci, je vais tester cela ! :) Partager ce message Lien à poster Partager sur d’autres sites
Invité Répondu : 31 mars 2017 @SwiKZiiK Il n'y a aucun rapport entre ce que tu dis et l'erreur renvoyé par Eclipse lol. Dans ta classe principale, crée une instance (public static TaMain instance;). Ensuite, définis-la dans ton onEnable(this = instance;). Puis crée la méthode pour la récupérer : public static TaMain getInstance() { return instance; } Après, dans ton scheduleSyncRepeatingTask au lieu de mettre this ou plugin tu mets TaMain.getInstance() Partager ce message Lien à poster Partager sur d’autres sites
Invité Répondu : 1 avril 2017 Salut, Ici c'est du skript, pas du java ... Rappel moi en quoi est fait skript ? En java, donc il n'y a pas de problème d'avoir une demande d'aide pour du java ... x) Partager ce message Lien à poster Partager sur d’autres sites
Invité Répondu : 1 avril 2017 @SwiKZiiK Il n'y a aucun rapport entre ce que tu dis et l'erreur renvoyé par Eclipse lol. Dans ta classe principale, crée une instance (public static TaMain instance;). Ensuite, définis-la dans ton onEnable(this = instance;). Puis crée la méthode pour la récupérer : public static TaMain getInstance() { return instance; } Après, dans ton scheduleSyncRepeatingTask au lieu de mettre this ou plugin tu mets TaMain.getInstance() Merci à toi encore poir ta réponse :) Je vais tester cela ! Rappel moi en quoi est fait skript ? En java, donc il n'y a pas de problème d'avoir une demande d'aide pour du java ... x) Merci d'avoir developpé x) Partager ce message Lien à poster Partager sur d’autres sites
Invité Répondu : 1 avril 2017 Merci à toi encore poir ta réponse :) Je vais tester cela ! Merci d'avoir developpé x) Sinon @Galaxie69 a raison, donc normalement ton scheduler devrait fonctionner. Et de rien x) Mais en vrai je n'ai pas fait grand choses Partager ce message Lien à poster Partager sur d’autres sites
Invité Répondu : 1 avril 2017 @Galaxie69, je n'est plus d'erreur au niveau du scheduler mais j'en ai encore une sur l'instance (sur le "this = instance"), eclipse me renvoi ça : The left-hand side of an assignment must be a variable Partager ce message Lien à poster Partager sur d’autres sites
Invité Répondu : 1 avril 2017 @Galaxie69, je n'est plus d'erreur au niveau du scheduler mais j'en ai encore une sur l'instance (sur le "this = instance"), eclipse me renvoi ça : The left-hand side of an assignment must be a variable Bah au pire pourquoi pas faire instance = this; (je ne suis pas sur mais essaye)... Partager ce message Lien à poster Partager sur d’autres sites
Invité Répondu : 1 avril 2017 Ok merci je vais tester :) EDIT : Effectivement cela a l'air de marcher ! Partager ce message Lien à poster Partager sur d’autres sites
Skripting 605 Répondu : 1 avril 2017 Regarde y a plus simple. Prenons exemple, tu veux envoyer un message, attendre 10 secondes, et envoyer un autre message. Tu fais ça : Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. 1 Partager ce message Lien à poster Partager sur d’autres sites
Invité Répondu : 1 avril 2017 Regarde y a plus simple. Prenons exemple, tu veux envoyer un message, attendre 10 secondes, et envoyer un autre message. Tu fais ça : player.sendMessage("Ton premier message."); TimeUnit.SECONDS.sleep(10); player.sendMessage("Ton deuxième message."); J'ai déjà essayer avec ton exemple d'avant mais cela ne marchait pas. La solution de @Galaxie69 est super ! :) Partager ce message Lien à poster Partager sur d’autres sites
Invité Répondu : 1 avril 2017 Regarde y a plus simple. Prenons exemple, tu veux envoyer un message, attendre 10 secondes, et envoyer un autre message. Tu fais ça : player.sendMessage("Ton premier message."); TimeUnit.SECONDS.sleep(10); player.sendMessage("Ton deuxième message."); Ouais fin bon, simple mais ça ne remplace un scheduler x) Partager ce message Lien à poster Partager sur d’autres sites
Skripting 605 Répondu : 1 avril 2017 J'ai déjà essayer avec ton exemple d'avant mais cela ne marchait pas. La solution de @Galaxie69 est super ! :) Es-tu sûr d'avoir ajouté le bloc try/catch avec l'exception InterruptedException ? Comme ceci : Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Partager ce message Lien à poster Partager sur d’autres sites