Résolu Envoyer une requete à Mojang pour récupérer un UUID
-
Bonjour,
Je suis nouveau sur ce forum et je cherche une solution à un problème. Je suis actuellement en train de coder un plugin de maintenance pour mon serveur. J’ai créer également une liste où mettre les joueurs qui ne seront pas affecter pas la maintenance sauf que pour les mettre dans cette liste, il faut que le joueur soit connecter et j’aimerai passer ce système à un système plus opérationnel avec une requete encoyer à Mojang qui renvoie ensuite sont UUID. Alors, je sais que c’est un forum pour Forge mais le code doit être le même également sur Spigot.
Je vous envoie également ma class maintenance (c’est à la ligne 46 qui récupe les UUID des joueurs en ligne et c’est ca que je veux modifier).package fr.orgealexj06.fgplugin.commands; import com.google.gson.JsonObject; import fr.orgealexj06.fgplugin.FgPlugin; import fr.orgealexj06.fgplugin.constants.Messages; import fr.orgealexj06.fgplugin.utils.ServerManagement; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.OfflinePlayer; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import java.util.UUID; public class CommandMaintenance implements CommandExecutor { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (sender.hasPermission("fg.maintenance.use")) { if (label.equalsIgnoreCase("fgmaintenance")) { if (args.length == 1) { // Enabled maintenance {Command} if (args[0].equalsIgnoreCase("on")) { FgPlugin.ENABLED = true; ServerManagement.kickAllNonAllowed(); // Admin Message enabled maintenance {Message} sender.sendMessage(Messages.MAINTENANCE_ENABLED.getMessage()); // Disabled maintenance {Command} } else if (args[0].equalsIgnoreCase("off")) { FgPlugin.ENABLED = false; // Admin Message disabled maintenance {Message} sender.sendMessage(Messages.MAINTENANCE_DISABLED.getMessage()); // List of player authorized players {Command} } else if (args[0].equalsIgnoreCase("list")) { OfflinePlayer player; for (UUID uuid : FgPlugin.getAUTHORIZED()) { player = Bukkit.getOfflinePlayer(uuid); // OfflinePlayer --> UUID Mojang Request if (player != null) { sender.sendMessage(ChatColor.LIGHT_PURPLE + player.getName()); } } } else { sender.sendMessage(Messages.COMMAND_INVALID_ARGS.getMessage()); } } else if (args.length == 2) { // Add player to the list of authorized players {Command} if (args[0].equalsIgnoreCase("add")) { final String playername = args[1]; final Player player = Bukkit.getPlayer(playername); if (player != null) { final UUID uuid = player.getUniqueId(); FgPlugin.getAUTHORIZED().add(uuid); sender.sendMessage(Messages.MAINTENANCE_PLAYER_ADD_TO_LIST.getMessage()); } else { sender.sendMessage(Messages.PLAYER_NOT_ONLINE.getMessage()); } } // Remove player of list of authorized players {Command} else if (args[0].equalsIgnoreCase("remove")) { final String playername = args[1]; final Player player = Bukkit.getPlayer(playername); if (player != null) { final UUID uuid = player.getUniqueId(); FgPlugin.getAUTHORIZED().remove(uuid); sender.sendMessage(Messages.MAINTENANCE_PLAYER_REMOVE_TO_LIST.getMessage()); } else { sender.sendMessage(Messages.PLAYER_NOT_ONLINE.getMessage()); } } } else { sender.sendMessage(Messages.COMMAND_INVALID_ARGS_LENGHT.getMessage()); } return true; } } return false; } }
Mais le problème c’est que je ne sais pas du tout comment faire
Merci de m’aider -
Bonjour,
Faire une requête à chaque fois est inefficace, minecraft a un système de cache (fichier
usercache.json
).
Il y a des fonctions toutes faite pour récupérer l’uuid d’un joueur via le pseudo, la commande/whitelist add
l’utilise par exemple. Il faut regarder son fonctionner et voir si l’api de Bukkit fourni un wrapper pour.(et non, grosse différence entre forge et les plugins, dans le cas des plugins bukkit on utilise l’api de bukkit, alors que dans le cas de forge on appel directement le code de mc. Sur un plugin on peut aussi appeler directement le code de mc, mais cela a des conséquences sur la compatibilité intra-version, et le code restera différent de forge car spigot n’utilise pas du tout les mêmes mappings que forge, les fonctions ont donc des noms complètement différent).
-
Bonjour,
Faire une requête à chaque fois est inefficace, minecraft a un système de cache (fichier
usercache.json
).
Il y a des fonctions toutes faite pour récupérer l’uuid d’un joueur via le pseudo, la commande/whitelist add
l’utilise par exemple. Il faut regarder son fonctionner et voir si l’api de Bukkit fourni un wrapper pour.(et non, grosse différence entre forge et les plugins, dans le cas des plugins bukkit on utilise l’api de bukkit, alors que dans le cas de forge on appel directement le code de mc. Sur un plugin on peut aussi appeler directement le code de mc, mais cela a des conséquences sur la compatibilité intra-version, et le code restera différent de forge car spigot n’utilise pas du tout les mêmes mappings que forge, les fonctions ont donc des noms complètement différent).
-
-
-