Plugin Messages

EternityGame

Aventurier
8 Janvier 2017
18
1
4
22
Bonjour je suis débutant et je suis en train de développer un plugin hub : j'ai quelques problèmes
tout d'abord j'ai fait en sorte que quand on rejoint ça nous met en gamemode mais ça ne marche pas pourtant j'ai bien fait p.setGamemode(Gamemode.ADVENTURE);
2 e probleme quand on rejoint le serveur ça affiche un message mais quand on rejoint ça ne met pas le préfixe alors qeu quand on quitte ça le met.
3e problème : quand on rejoint le serveur vu que ça fait /spawn ça affiche un message "téléportation en cours"
es ce possible de l'enlever ? Merci à ceux qui pourront m'aider :)
Code:
package fr.inventorykingslime;


import org.bukkit.GameMode;
import org.bukkit.Material;
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;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.permissions.Permission;

public class Join implements Listener {
   
    private Permission perm = new Permission("king.join");
    private Main main;
   
    public Join(Main main) {
        this.main = main;
    }
   
    @EventHandler
    public void onJoin(PlayerJoinEvent e) {
        Player p = e.getPlayer();
        p.performCommand("spawn");
        if(p.getWorld().getName().equals("Lobby")) {
            ItemStack slime = new ItemStack(Material.SLIME_BALL);
            ItemMeta slimeMeta = slime.getItemMeta();
            slimeMeta.setDisplayName("§2§lJeux");
            slime.setItemMeta(slimeMeta);
       
            ItemStack star = new ItemStack(Material.NETHER_STAR);
            ItemMeta starMeta = star.getItemMeta();
            starMeta.setDisplayName("§7§lChanger de Lobby");
            star.setItemMeta(starMeta);
       
            p.getInventory().clear();
            p.getInventory().setItem(0, slime);
            p.getInventory().setItem(8, star);
            p.setGameMode(GameMode.ADVENTURE);
            p.setHealth(20);
            p.setFoodLevel(20);
            p.setLevel(0);
            p.setExp(0);
        }
        if(p.hasPermission("king.join")){
            e.setJoinMessage((p.getDisplayName() + " §ba rejoint le hub !"));
        }else{
            e.setJoinMessage("");
        }
    }
   
    @EventHandler
    public void onQuit(PlayerQuitEvent e){
        Player p = e.getPlayer();
        if(p.hasPermission("king.join")){
            e.setQuitMessage((p.getDisplayName() + " §4a quitté le hub !"));
        }else{
            e.setQuitMessage("");
        }       
    }
       

}
 

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,

3e problème : quand on rejoint le serveur vu que ça fait /spawn ça affiche un message "téléportation en cours"
es ce possible de l'enlever ? Merci à ceux qui pourront m'aider
Faire exécuter à ton plugin une commande d'un autre plugin (/spawn est intégré par essentials) est très moche...
Il vaut mieux avoir une config où tu met la location du spawn et où tu fais plutôt un player.teleport(spawn_de_la_config);

2 e probleme quand on rejoint le serveur ça affiche un message mais quand on rejoint ça ne met pas le préfixe alors qeu quand on quitte ça le met.
C'est un plugin qui rajoute les préfixes... Le plugin met le préfixe du joueur à sa connexion. Il y a une possibilité que ce plugin s'active avant ton plugin... Donc que le préfixe ne soit pas encore définit. Pour changer cela, il faut changer la priorité de ton event :)
Infos:
Je te conseil la version anglaise qui est (à mon sens) plus claire... M'enfin si tu as trop de problème en anglais, la version française est la :)
Exemple concrèt pour ton problème:
Code:
    @EventHandler(priority = EventPriority.HIGH)
    public void onJoin(PlayerJoinEvent event) {
        // to code
    }

tout d'abord j'ai fait en sorte que quand on rejoint ça nous met en gamemode mais ça ne marche pas pourtant j'ai bien fait p.setGamemode(Gamemode.ADVENTURE);
Tu n'a aucun erreur dans tes logs ?
Tu n'a pas activer le "force-gamemode" dans ton server.properties ?


Cordialement,
Detobel36
 
  • J'aime
Reactions: EternityGame

EternityGame

Aventurier
8 Janvier 2017
18
1
4
22
Salut merci pour ta réponse, alors oui j'ai une erreur :
[20:47:20] [Server thread/ERROR]: Could not pass event PlayerInteractEvent to KingHub987 v1.7 et le force gamemode est désactivé :/
et pour le /spawn je l'avait fait car si je faisais p.teleport ça ne me téléportait pas dans le bon monde
 

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,

pour le /spawn je l'avait fait car si je faisais p.teleport ça ne me téléportait pas dans le bon monde
C'est toi qui choisi le monde en créant la location :)
Code:
Location loc = new Location(Bukkit.getWorld("NomDuMonde"), 12, 120, -2);
La j'ai créé une Location dans le monde "NomDuMonde" aux coordonnées 12, 120 et -2 ;)

[20:47:20] [Server thread/ERROR]: Could not pass event PlayerInteractEvent to KingHub987 v1.7
A priori ça n'a pas de rapport avec le problème actuelle... M'enfin tu ferais bien de corriger quand même ;)


Cordialement,
Detobel36
 
  • J'aime
Reactions: EternityGame

EternityGame

Aventurier
8 Janvier 2017
18
1
4
22
Merci beaucoup pour tes réponses :)

Edit : @Detobel36
j'ai testé les events priority en lowest et monitor mais ça change rien
ps: merci j'ai plus ces fichus messages mais c'est bizarre le gamemode ne s'active toujours pas :/
 
Dernière édition:

Detobel36

Créateur de plugins (PhoenixRebirth)
Support
17 Août 2012
10 530
24
2 247
347
27
Bruxelles - Belgique
www.phoenix-rebirth.fr
  • J'aime
Reactions: EternityGame

EternityGame

Aventurier
8 Janvier 2017
18
1
4
22
Salut,


Il faut mettre en Hight ou Hightnest


Est-tu sur que ce n'est pas Multiverse qui change le gamemode par la suite ? Quel est ta liste de plugin ?


Cordialement,
Detobel36
Effectivement c'est multiverse qui change ça et je ne peut pas le changer xD il se remet a chaque fois :/ au pire tant pis je ferais une class dans mon plugin pour interdire de casser des blocs,
par contre pour les High ect ça ne marche pas mais le problème c'est que mon plugin se load avant permission ex je pense que c'est la cause du problème il y a t'il moyen de faire que son plugin se load plus tard ?
 

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,

Code:
/mvm set gamemode 3

par contre pour les High ect ça ne marche pas mais le problème c'est que mon plugin se load avant permission ex je pense que c'est la cause du problème il y a t'il moyen de faire que son plugin se load plus tard ?
Y a pas de lien avec le "onLoad" et les events :)
As-tu essayés: HIGHEST ou MONITOR
Si cela ne fonctionne toujours pas, fait un Bukkit.getScheduler().runTaskLater...
Je suppose que tu connais :) Pour exécuter le code quelques ticks après la connexion du joueur. C'est pas tiptop surtout niveau performance, m'enfin ça marchera surement ;)


Cordialement,
Detobel36
 
  • J'aime
Reactions: EternityGame

EternityGame

Aventurier
8 Janvier 2017
18
1
4
22
Salut !
Merci pour le /mvm ça marche :)
j'ai essayer avec les HIGHEST et MONITOR mais ça ne marche pas,
par contre je ne sais pas comment ça marche le Bukkit.getScheduler().runTaskLater; xD désoler de t’importuné xD

@Detobel36 ??
 
Dernière édition: