can't sendMessage("hello") >:(

Discussion in 'Plugin Development' started by ilian572, Jul 5, 2018.

Thread Status:
Not open for further replies.
  1. Hello guys,

    I have a problem with my plugin for 1.7.10 minecraft.

    I haven't any problem when I use a player.sendMessage("xxx") . The problem is, everything who is in a if condition don't work. But it's juste a player.sendMessage("xxx").

    I search on a lot a forums but i find nothing. I don't know if you guys needs all of the program or just the error ?

    Code:
    [19:12:28 ERROR]: null
    org.bukkit.command.CommandException: Unhandled exception executing command 'trade' in plugin TradeIt v1.0
            at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[bukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:180) ~[bukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at org.bukkit.craftbukkit.v1_7_R4.CraftServer.dispatchCommand(CraftServer.java:740) ~[bukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.PlayerConnection.handleCommand(PlayerConnection.java:957) [bukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.PlayerConnection.a(PlayerConnection.java:818) [bukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.PacketPlayInChat.a(PacketPlayInChat.java:28) [bukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.PacketPlayInChat.handle(PacketPlayInChat.java:47) [bukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.NetworkManager.a(NetworkManager.java:157) [bukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.ServerConnection.c(SourceFile:134) [bukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:667) [bukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:258) [bukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:558) [bukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:469) [bukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [bukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
    Caused by: java.lang.NullPointerException
            at fr.ilian572.tradeit.commands.CommandTest.onCommand(CommandTest.java:55) ~[?:?]
            at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[bukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            ... 13 more
    
     
  2. Online

    timtower Administrator Administrator Moderator

  3. Okay, sorry

    Code:
    package fr.ilian572.tradeit.commands;
    
    
    import java.util.HashMap;
    import java.util.Map;
    import org.bukkit.Bukkit;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    
    public class CommandTest implements CommandExecutor
    {
        public Map<Player, Player> playersDemande = new HashMap<>();
        public Map<Player, Player> playersAccepte = new HashMap<>();
        String tradeit =  "§c[§aTrade-It§c]§r ";
        @SuppressWarnings("deprecation")
        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String msg, String[] args)
        {
            if (sender instanceof Player)
            {
                Player player = (Player)sender;           
                if (cmd.getName().equalsIgnoreCase("test"))
                {
                    player.sendMessage(tradeit + "Succès");
                }
                else if (cmd.getName().equalsIgnoreCase("trade"))
                {
                    if (args.length == 0)
                    {
                        player.sendMessage(tradeit + "Il manque des arguments, /trade help pour avoir de l'aide.");
                    }
                    else
                    {
                        String targetName = args[0];
                        Player target = Bukkit.getPlayer(targetName);
                        if (args[0].equalsIgnoreCase("v") || args[0].equalsIgnoreCase("version"))
                        {
                            player.sendMessage(tradeit + "Version 1.0. Créée par (ilian)572_ Pour Paladium.");
                        }
                        else if (args[0].equalsIgnoreCase("h") || args[0].equalsIgnoreCase("help"))
                        {
                            player.sendMessage(tradeit + "Liste des commandes :");
                            player.sendMessage("/trade <joueur> : Envoie une demande de trade.");
                            player.sendMessage("/trade <oui/accepter> : Accepter la demande reçue.");
                            player.sendMessage("/trade <non/refuser> : Refuser la demande reçue. ");
                            player.sendMessage("/trade <version/v> : Informations sur le plugin Trade-It.");
                        }
                        else if (args[0].equalsIgnoreCase("accepter") || args[0].equalsIgnoreCase("refuser") || args[0].equalsIgnoreCase("oui") || args[0].equalsIgnoreCase("non"))
                        {
                            if (args[0].equalsIgnoreCase("accepter") || args[0].equalsIgnoreCase("oui") && playersDemande.containsKey(player))
                            {
                                playersDemande.remove(player);
                                Bukkit.getPlayer(targetName).sendMessage(tradeit + "En trade avec §c" + player + "§r.");
                                player.sendMessage(tradeit + "En trade avec §c" + target + "§r.");
                            }
                            else if (args[0].equalsIgnoreCase("refuser") || args[0].equalsIgnoreCase("non") && playersDemande.containsKey(player))
                            {           
                                    target.sendMessage(tradeit);
                                    player.sendMessage(tradeit);
                                    target.sendMessage(target.getName());
                                    player.sendMessage(target.getName());
                                //HERE, I can't do anything
                               
                                //playersDemande.remove(player);
                                //playersDemande.remove(target);
                               
                                //player.sendMessage(tradeit + "Tu viens de refuser la demande de §c" + targetName + "§r.");
                                //target.sendMessage(tradeit + "§c" + "§r vient de refuser ta demande de trade.");
                            }
                            else
                            {
                                player.sendMessage(tradeit + "Il semblerait que tu n'ai reçu aucune demande de trade...");
                            }
                        }
                        else if (Bukkit.getPlayer(targetName) != null)
                        {
                            if (player == target)
                            {
                                player.sendMessage(tradeit + "Ben voyons...");
                            }
                            else if (playersAccepte.containsKey(target))
                            {
                                player.sendMessage(tradeit + "Ce joueur a déjà une demande en cours.");
                            }
                            else
                            {
                                playersDemande.put(target, player);
                                player.sendMessage(tradeit + "Demande envoyée à §c" + targetName + "§r.");
                                target.sendMessage(tradeit + "Tu viens de recevoir une demande de trade de §c"+ player.getName() + "§r.");
                                target.sendMessage("§2/trade <oui/accepter> §rou §4/trade <non/refuser>");
                            }
                        }
                        else if (Bukkit.getPlayer(targetName) == null)
                        {
                            player.sendMessage(tradeit +"Le joueur §c" + targetName + "§r n'est pas connecté ou n'existe pas");
                        }
                        else
                        {
                           
                        }
    
                    }
           
           
           
           
           
                }
           
            }    // fin test si instanceof player   
            return false; // public boolean oncommand
        }
    } // fin du toute fin
     
  4. Offline

    Koobaczech

    Hey buddy. Your log shows a NullPointerException on line 55. That's because your code Bukkit.getPlayer(targetName) is assuming that player exists. You should check if the player exists beforehand. You can also check if target==null when you do Player target = Bukkit.getPlayer(targetName);, that way you know if you got a valid player or not. Maybe do something like for (Player p : Bukkit.getServer().getOnlinePlayers()) and then if (targetName.equalsIgnoreCase(p.getName()), that way you can make sure that player exists and is online. Cheers
     
  5. Online

    timtower Administrator Administrator Moderator

  6. Thank you guys, i'm going to check this ! :D


    Edit : I understand what you are telling me but I have just a problem in the if condition at line 64. Out of this condition, there isn't problem with "target" or "player". I wasn't clear, sorry.

    up ! :D

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jul 6, 2018
Thread Status:
Not open for further replies.

Share This Page