Spooky Event Error

Discussion in 'Plugin Development' started by Synthio, Apr 5, 2020.

Thread Status:
Not open for further replies.
  1. Offline

    Synthio

    I'm trying to make a command that lets administrators spy on default players' commands, and I'm having trouble squashing this bug. Any help is appreciated! (Keep in mind that this is being implemented into a larger plugin)

    Command Class:
    Command (open)
    Code:
    public class CommandspyCommand extends ConverseBase implements CommandExecutor
    {
        List<String> toggle = new ArrayList<String>();
    
        public boolean onCommand(CommandSender sender, Command cmd, String s, String[] args)
        {
    
            if (!(sender instanceof Player))
            {
                sender.sendMessage("Only a player can enable CommandSpy!");
                return true;
            }
    
            if (!(sender.hasPermission("converse.commandspy")))
            {
                sender.sendMessage(Messages.NO_PERMISSION);
                return true;
            }
    
            Player player = (Player) sender;
    
            if (toggle.contains(player.getName()))
            {
                player.sendMessage(ChatColor.GRAY + "CommandSpy has been disabled.");
                toggle.remove(player.getName());
            } else {
    
                player.sendMessage(ChatColor.GRAY + "CommandSpy has been enabled.");
                toggle.add(player.getName());
            }
    
            return true;
        }
    }


    Listener:
    Listener (open)
    Code:
    public static HashMap<Player, Boolean> cmdspy = new HashMap<Player, Boolean>();
    
        @EventHandler
        public static void cmdSpy(PlayerCommandPreprocessEvent event)
        {
    
            for (Player player : Bukkit.getOnlinePlayers())
            {
                if (cmdspy.get(player))
                {
                    player.sendMessage(event.getPlayer() + ": " + event.getMessage().trim());
                }
            }
        }


    Error:
    Error (open)
    Code:
    [16:13:26 ERROR]: Could not pass event PlayerCommandPreprocessEvent to Converse v1.1.2-SNAPSHOT
    java.lang.NullPointerException: null
            at net.novelmc.listeners.ChatListener.cmdSpy(ChatListener.java:68) ~[?:?]
            at com.destroystokyo.paper.event.executor.StaticMethodHandleEventExecutor.execute(StaticMethodHandleEventExecutor.java:38) ~[patched_1.15.2.jar:git-Paper-160]
            at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[patched_1.15.2.jar:git-Paper-160]
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[patched_1.15.2.jar:git-Paper-160]
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:607) ~[patched_1.15.2.jar:git-Paper-160]
            at net.minecraft.server.v1_15_R1.PlayerConnection.handleCommand(PlayerConnection.java:1817) ~[patched_1.15.2.jar:git-Paper-160]
            at net.minecraft.server.v1_15_R1.PlayerConnection.a(PlayerConnection.java:1633) ~[patched_1.15.2.jar:git-Paper-160]
            at net.minecraft.server.v1_15_R1.PacketPlayInChat.a(PacketPlayInChat.java:47) ~[patched_1.15.2.jar:git-Paper-160]
            at net.minecraft.server.v1_15_R1.PacketPlayInChat.a(PacketPlayInChat.java:5) ~[patched_1.15.2.jar:git-Paper-160]
            at net.minecraft.server.v1_15_R1.PlayerConnectionUtils.lambda$ensureMainThread$0(PlayerConnectionUtils.java:23) ~[patched_1.15.2.jar:git-Paper-160]
            at net.minecraft.server.v1_15_R1.TickTask.run(SourceFile:18) ~[patched_1.15.2.jar:git-Paper-160]
            at net.minecraft.server.v1_15_R1.IAsyncTaskHandler.executeTask(IAsyncTaskHandler.java:136) ~[patched_1.15.2.jar:git-Paper-160]
            at net.minecraft.server.v1_15_R1.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) ~[patched_1.15.2.jar:git-Paper-160]
            at net.minecraft.server.v1_15_R1.IAsyncTaskHandler.executeNext(IAsyncTaskHandler.java:109) ~[patched_1.15.2.jar:git-Paper-160]
            at net.minecraft.server.v1_15_R1.MinecraftServer.ba(MinecraftServer.java:1038) ~[patched_1.15.2.jar:git-Paper-160]
            at net.minecraft.server.v1_15_R1.MinecraftServer.executeNext(MinecraftServer.java:1031) ~[patched_1.15.2.jar:git-Paper-160]
            at net.minecraft.server.v1_15_R1.IAsyncTaskHandler.awaitTasks(IAsyncTaskHandler.java:119) ~[patched_1.15.2.jar:git-Paper-160]
            at net.minecraft.server.v1_15_R1.MinecraftServer.sleepForTick(MinecraftServer.java:1015) ~[patched_1.15.2.jar:git-Paper-160]
            at net.minecraft.server.v1_15_R1.MinecraftServer.run(MinecraftServer.java:938) ~[patched_1.15.2.jar:git-Paper-160]
            at java.lang.Thread.run(Unknown Source) [?:1.8.0_241]
     
  2. Offline

    bowlerguy66

    @Synthio This may help you, it all depends on what is on line 68 of your ChatListener
     
  3. Perhaps give us the entire class instead of a snippet.
    The only thing I could think of according to what you gave is cmdspy.get(player) being null / nothing.
     
  4. Offline

    Synthio

    The class just has a few more events. If you'd like me to share the entire thing I will. Also, how would I fix the cmdspy.get(player) being null?
     
    Last edited: Apr 7, 2020
Thread Status:
Not open for further replies.

Share This Page