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 (Move your mouse to reveal the content) Command (open) Command (close) 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 (Move your mouse to reveal the content) Listener (open) Listener (close) 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 (Move your mouse to reveal the content) Error (open) Error (close) 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]
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.
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?