Partage
  • Partager sur Facebook
  • Partager sur Twitter

Plugin de ban

Prendre un joueur hors-ligne serveur crack

    27 décembre 2022 à 19:52:42

    Hey, 

    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]

    ... 15 more

    Voici ma class 

    package fr.kikyo.ss.commands;

    import fr.kikyo.ss.Main;
    import fr.kikyo.ss.utils.ItemBuilder;
    import org.bukkit.Bukkit;
    import org.bukkit.Material;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.inventory.Inventory;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
    import org.bukkit.inventory.meta.SkullMeta;

    import java.util.UUID;

    public class Base implements CommandExecutor {

    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

    • Partager sur Facebook
    • Partager sur Twitter
      4 juin 2023 à 14:34:54

      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é.

      • Partager sur Facebook
      • Partager sur Twitter

      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.
      • Editeur
      • Markdown