J'essaye de faire un plugin qui peut bannir des gens à travers un GUI.
Je viens de le commencer, et quand un joueur est en ligne tout marche bien. Par contre quand il est hors-ligne j'ai une erreur. J'ai enregistré le nom du joueur lors de sa première connexion dans une ArrayList.
Voici l'erreur:
[18:45:21 INFO]: Kikyo_c issued server command: /ss Test
[18:45:21 ERROR]: null org.bukkit.command.CommandException: Unhandled exception executing command 'ss' in plugin SS v1.0 at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[server.jar:git-Spigot-21fe707-741a1bd]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[server.jar:git-Spigot-21fe707-741a1bd]
at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:641) ~[server.jar:git-Spigot-21fe707-741a1bd]
at net.minecraft.server.v1_8_R3.PlayerConnection.handleCommand(PlayerConnection.java:1162) [server.jar:git-Spigot-21fe707-741a1bd]
at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:997) [server.jar:git-Spigot-21fe707-741a1bd]
at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:45) [server.jar:git-Spigot-21fe707-741a1bd]
at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:1) [server.jar:git-Spigot-21fe707-741a1bd]
at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [server.jar:git-Spigot-21fe707-741a1bd]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_312]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_312]
at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [server.jar:git-Spigot-21fe707-741a1bd]
at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715) [server.jar:git-Spigot-21fe707-741a1bd]
at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [server.jar:git-Spigot-21fe707-741a1bd]
at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [server.jar:git-Spigot-21fe707-741a1bd]
at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [server.jar:git-Spigot-21fe707-741a1bd]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_312]
Caused by: java.lang.NullPointerException
at fr.kikyo.ss.commands.Base.onCommand(Base.java:42) ~[?:?]
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[server.jar:git-Spigot-21fe707-741a1bd]
private Main main; public Base(Main main) { this.main = main; }
@Override public boolean onCommand(CommandSender Sender, Command cmd, String s, String[] args) { Player p = (Player) Sender; Player t = Bukkit.getPlayer(args[0]); if(!(Sender instanceof Player)){ System.out.println("Vous devez être un joueur pour faire cela"); return false; } if(args.length == 0){ p.sendMessage(main.getConfig().getString("ban.noargs").replace("&", "§")); return false; }
if(Main.getInstance().getPlayers().contains(t.getUniqueId())) { p.sendMessage(String.valueOf(t)); Inventory base = Bukkit.createInventory(null, 54, "§7Sanctionner " + t.getName()); ItemStack head = new ItemStack(Material.SKULL_ITEM); SkullMeta headM = (SkullMeta) head.getItemMeta(); headM.setOwner("Kikyo_c"); headM.setDisplayName("§7Sanctionner §c§l" + t.getName()); head.setItemMeta(headM); ItemBuilder chat = new ItemBuilder(Material.BOOK).setName("§7Chat").setLore("§7Voir les sanctions pour le §7§lchat"); ItemBuilder cheat = new ItemBuilder(Material.IRON_SWORD).setName("§7Cheat").setLore("§7Voir les sanction pour les §7§lcheats"); ItemBuilder grief = new ItemBuilder(Material.DIAMOND_BLOCK).setName("§7Grief").setLore("§7Voir les sanctions pour le §7§lgrief"); base.setItem(0, head); base.setItem(1, chat.toItemStack()); base.setItem(2, cheat.toItemStack()); base.setItem(3, grief.toItemStack()); ReplaceVoid(base); p.openInventory(base); }else{ p.sendMessage("Ce joueur ne s'est jamais connecté"); }
return false; }
public void ReplaceVoid(Inventory inv){ for(int i = 0;i<54;i++){ if(inv.getItem(i) == null) { ItemStack font = new ItemStack(Material.STAINED_GLASS_PANE, 1, (byte) 7); inv.setItem(i, font); } } } }
Merci beaucoup
- Edité par Patate_Froide 27 décembre 2022 à 19:53:37
L'erreur se produit lorsque la variable T est nulle, ce qui signifie que le joueur spécifié dans la commande n'est pas en ligne ou n'existe pas.
@Override
public boolean onCommand(CommandSender Sender, Command cmd, String s, String[] args) {
Player p = (Player) Sender;
if (!(Sender instanceof Player)) {
System.out.println("Vous devez être un joueur pour faire cela");
return false;
}
if (args.length == 0) {
p.sendMessage(main.getConfig().getString("ban.noargs").replace("&", "§"));
return false;
}
Player t = Bukkit.getPlayer(args[0]);
if (t == null) {
p.sendMessage("Ce joueur n'est pas en ligne ou n'existe pas.");
return false;
}
if (Main.getInstance().getPlayers().contains(t.getUniqueId())) {
p.sendMessage(String.valueOf(t));
Inventory base = Bukkit.createInventory(null, 54, "§7Sanctionner " + t.getName());
ItemStack head = new ItemStack(Material.SKULL_ITEM);
SkullMeta headM = (SkullMeta) head.getItemMeta();
headM.setOwner("Kikyo_c");
headM.setDisplayName("§7Sanctionner §c§l" + t.getName());
head.setItemMeta(headM);
ItemBuilder chat = new ItemBuilder(Material.BOOK).setName("§7Chat").setLore("§7Voir les sanctions pour le §7§lchat");
ItemBuilder cheat = new ItemBuilder(Material.IRON_SWORD).setName("§7Cheat").setLore("§7Voir les sanction pour les §7§lcheats");
ItemBuilder grief = new ItemBuilder(Material.DIAMOND_BLOCK).setName("§7Grief").setLore("§7Voir les sanctions pour le §7§lgrief");
base.setItem(0, head);
base.setItem(1, chat.toItemStack());
base.setItem(2, cheat.toItemStack());
base.setItem(3, grief.toItemStack());
ReplaceVoid(base);
p.openInventory(base);
} else {
p.sendMessage("Ce joueur ne s'est jamais connecté");
}
return false;
}
public void ReplaceVoid(Inventory inv) {
for (int i = 0; i < 54; i++) {
if (inv.getItem(i) == null) {
ItemStack font = new ItemStack(Material.STAINED_GLASS_PANE, 1, (byte) 7);
inv.setItem(i, font);
}
}
}
Cela devrait aider à résoudre le problème NullPointerException auquel vous étiez confronté.
Plugin de ban
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.