Plugin Résolu [JAVA] ServerListPingEvents

blackmine57

Architecte en herbe
29 Avril 2015
273
4
79
22
Dernière édition:
Quand un joueur rejoint le serveur sa rajoute 1 slot, désolé je vais le rajouter au dessus
 
Quand un joueur rejoint le serveur sa rajoute 1 slot, désolé je vais le rajouter au dessus
Haaa okay.
Dans l'idée c'est pas bête, mais en vrai je ne pense pas que tu puisses, vu que la modification de slot est effective juste quand tu redémarres le serveur.
 
Lesquels ? :o (je veux bien le connaitre)
Bah théoriquement c'est facile, faut juste injecter une classe modifiée dans le serveur, avec de la réflexion. Avec la réflexion, tu peut tout quasiment tout faire ; faire que chacun voie la map différemment, modifier une variable private static final, etc.

Sinon, si tu regarde un peu dans les logs, tu peut voire
Code:
Caused by: java.lang.NullPointerException
    at fr.SMS.Events.ServerListPingEvents.onServerPing(ServerListPingEvents.java:21) ~[?:?]

Donc tu va à la ligne 21 de ton ServerListPingEvents :
Code:
int ms = Main.getConfig().getInt("Slots");

Et sachant que NullPointerException signifie que tu attribue à ton integer ms une valeur vide, ce qui signifie que la fonction getInt("Slots") reviens null, donc qu'il n'y a pas d'options Slots dans ton fichier de configuration !

Et sinon en regardant ton code, je vois une quelques petites erreurs :

Code:
OnlinePlayers = Bukkit.getOnlinePlayers().size();
Déjà là, faut respecter la convention ! En lisant sa, je voit que OnlinePlayers est une classe et non un variable (car elle commence par une majuscule), et je met dit que sa ne devrais pas compilé car tu n'as pas mit de nom de variable à cette classe. Donc, un 'O' minuscule, merci !

Code:
e.setMaxPlayers(OnlinePlayers++);
Là, un petit truc subtile sur l'incrémentation (le ++) :
Il y a deux type d'incrémentation, la pre-incrémentation et la post-incrémentation. Tu utilise la post, car tu as mit le ++ après.
Mais qu'est-ce que sa change, tu va me dire ?
Facile. Quand tu tape "++OnlinePlayers", il :
  1. Incrémente OnlinePlayers de 1
  2. Lit la valeur de OnlinePlayers et fait la méthode setMaxPlayers()
Quand tu tape "OnlinePlayers++", il :
  1. Lit la valeur de OnlinePlayers et fait la méthode setMaxPlayers()
  2. Incrémente OnlinePlayers de 1

Donc, là comme tu l'as écrit, d'abord il met le nombre de joueurs maximums au nombre de joueurs actuels, et après il ajoute 1 à OnlinePlayers, ce qu'il fait qu'il ne change pas !

Et sinon quand tu fait "((ServerListPingEvent) e).setMaxPlayers(int)", si je ne me trompe pas, tu change juste le nombre maximums de joueurs affichés dans le motd, tu ne change en rien la capacité maximale de joueurs.

Cordialement,
ShE3py.
 
Salut,
Merci pour ta réponse.
Voila le fichier config, car "Slots" existe : https://pastebin.com/psSmgW4J

J'ai changé pour le onlinePlayers.

J'ai pas compris ce que tu as dis avec onlinePlayers++ :x

Si je me trompe pas avec "e.setMaxPlayers" c'est que le MOTD qui change, mais ça ne modifie pas le nombre maximum de joueur.
 
Voila le fichier config, car "Slots" existe : https://pastebin.com/psSmgW4J
Vérifie que ton fichier s'est bien chargé
(Essaye
Code:
FileConfiguration config = YamlConfiguration.loadConfiguration(Main.getConfig().getFile());
int slots = config.getInt("Slots");
fait de tête, les méthodes peuvent changées)


J'ai pas compris ce que tu as dis avec onlinePlayers++ :x
Code:
int x = 0;
System.out.println(x++); // Affiche 0
System.out.println(x); // Affiche 1


Code:
int x = 0;
System.out.println(++x); // Affiche 1
System.out.println(x); // Affiche 1

En gros avec la post-incrémentation, il attend que le pc ai fini la ligne avant d'incrémenter.


Salut,
Merci pour ta réponse.
Voila le fichier config, car "Slots" existe : https://pastebin.com/psSmgW4J

J'ai changé pour le onlinePlayers.

J'ai pas compris ce que tu as dis avec onlinePlayers++ :x

Si je me trompe pas avec "e.setMaxPlayers" c'est que le MOTD qui change, mais ça ne modifie pas le nombre maximum de joueur.
Oui avec le e.setMaxPlayers(int), c'est juste le motd qui change, pas le nombre maximums de joueurs.