Créer un plugin qui change le message de connexion avec Sponge
Dans ce nouveau tuto sur l’API Sponge de Minecraft, on va voir comment personnaliser les messages de connexion et de déconnexion et ainsi y mettre ce que l’on veut. Les messages par défauts sont comme ça:
Une fois modifié:
Comment on fait ? Il faut savoir quand un joueur se connecte et quand un joueur se déconnecte. Pour cela on va devoir utiliser les événements « ClientConnectionEvent.Join » et « ClientConnectionEvent.Disconnect« . Je pense que leur nom est assez évocateur ?
Donc le code de nos deux fonctions va ressembler à ça:
@Listener //Quand un joueur se connecte: public void onPlayerJoin(ClientConnectionEvent.Join event) { } @Listener //Quand un joueur se déconnecte: public void onPlayerJoin(ClientConnectionEvent.Disconnect event) { }
Ensuite on doit récupérer le joueur qui c’est connecté ou déconnecté autrement ça ne sert à rien^^. Pour cela on fait:
Player player = (Player) event.getTargetEntity();
Pour avoir le nom du joueur on fait: « player.getName()« . Il ne reste plus qu’a envoyer le message dans la console ou aux joueurs.
Le code:
@Listener //Quand un joueur se connecte: public void onPlayerJoin(ClientConnectionEvent.Join event) { Player player = (Player) event.getTargetEntity(); event.setMessage( Texts.of("Bienvenue sur mon serveur " + player.getName() ) ); logger.info(player.getName() + " c'est connecté" ); } @Listener //Quand un joueur se déconnecte: public void onPlayerJoin(ClientConnectionEvent.Disconnect event) { Player player = (Player) event.getTargetEntity(); event.setMessage( Texts.of("A la prochaine " + player.getName() ) ); logger.info(player.getName() + " c'est déconnecté" ); }
EDIT:
On peut aussi rajouter un truck du genre:
On peut ainsi complété en mettant des commandes utile pour les nouveaux, afficher les règles…
Code:
PaginationService paginationService = event.getGame().getServiceManager().provide(PaginationService.class).get(); paginationService.builder() .title(Texts.of("Bienvenue"+ player.getName())) .contents( Texts.of("Il y a " + game.getServer().getOnlinePlayers().size() + " joueur(s) sur " + game.getServer().getMaxPlayers() + " connecté(s) sur le serveur.")) .header(Texts.of("Info:")) .paddingString("*") .sendTo(player); // .footer(Texts.of("Merci"))
Tous les codes sont testés et sont fonctionnels, si il arrive qu'un de ces codes ne fonctionne pas chez vous, merci de me le signaler.