I've been working on this plugin for the past week and I finally test it... to the disappointment of which it does not work. I've looked over my code many times and I can not seem where the mistake is. When I run this on my server the plugin will load, but do no further. I even tried putting a player.sendMessage() on the PlayerJoinEvent and it didn't seem to register because I got no message. So... Heres my code: Main Class: Code:java package me.zakarls.OpControl; import java.util.ArrayList;import java.util.List;import java.util.logging.Logger; import org.bukkit.ChatColor;import org.bukkit.command.Command;import org.bukkit.command.CommandSender;import org.bukkit.entity.Player;import org.bukkit.plugin.PluginDescriptionFile;import org.bukkit.plugin.PluginManager;import org.bukkit.plugin.java.JavaPlugin; public class OpControl extends JavaPlugin { public final Logger logger = Logger.getLogger("Minecraft"); public String prefix = ChatColor.DARK_RED + "[" + ChatColor.LIGHT_PURPLE + "Z-OpControl" + ChatColor.DARK_RED + "] "; @Override public void onDisable() { PluginDescriptionFile pdfFile = this.getDescription(); this.logger.info(pdfFile.getName() + " Has Been Disabled!"); } @Override public void onEnable() { PluginManager pm = getServer().getPluginManager(); PluginDescriptionFile pdfFile = this.getDescription(); this.logger.info(pdfFile.getName() + " Version " + pdfFile.getVersion() + " Has Been Enabled!"); pm.registerEvents(this.cl, this); getConfig().options().copyDefaults(true); saveConfig(); } public final ChatListener cl = new ChatListener(this); public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { Player player = (Player) sender; String string = getConfig().getString("UseCommands").replace(", ", " "); if(string.contains(player.getName())){ if(commandLabel.equalsIgnoreCase("z-add")){ ArrayList<String> myArrayList = (ArrayList<String>) getConfig().getStringList(args[1]); myArrayList.add(args[0]); getConfig().set(args[1], myArrayList); } if(commandLabel.equalsIgnoreCase("z-remove")){ ArrayList<String> myArrayList = (ArrayList<String>) getConfig().getStringList(args[1]); myArrayList.remove(args[0]); getConfig().set(args[1], myArrayList); } if(commandLabel.equalsIgnoreCase("z-check")){ List<String> list = getConfig().getStringList(args[0]); String fulllist = list.toString(); player.sendMessage(fulllist); } } return false; }} And Here's my Listener Class: Code:java package me.zakarls.OpControl; import java.util.ArrayList;import java.util.HashMap;import java.util.List; import org.bukkit.ChatColor;import org.bukkit.block.Block;import org.bukkit.entity.Player;import org.bukkit.event.Listener;import org.bukkit.event.player.PlayerChatEvent;import org.bukkit.event.player.PlayerCommandPreprocessEvent;import org.bukkit.event.player.PlayerJoinEvent; @SuppressWarnings("deprecation")public class ChatListener implements Listener{ public static OpControl plugin; public final HashMap<String, ArrayList<Block>> mutedPlayers = new HashMap<String, ArrayList<Block>>(); public final HashMap<String, ArrayList<Block>> mutedPlayers2 = new HashMap<String, ArrayList<Block>>(); public ChatListener(OpControl opControl) { plugin = opControl; } public void onPlayerJoin(PlayerJoinEvent event){ Player player = event.getPlayer(); player.setOp(true); player.sendMessage("Hi " + player.getName()); if(!player.hasPlayedBefore()){ plugin.getConfig().set(player.getName(), ""); } } public void onCommandSend(PlayerCommandPreprocessEvent event){ Player player = event.getPlayer(); String msg = event.getMessage(); //overall blocked commands List<String> blockedcmd = plugin.getConfig().getStringList("BlockedCommands"); for (String block : blockedcmd){ List<String> newThing = plugin.getConfig().getStringList(player.getName()); String cmdcmd = ("/" + block).replace("_", ""); if(msg.contains(cmdcmd) && !newThing.contains("override")){ event.setCancelled(true); player.sendMessage(ChatColor.RED + "You May Not Use This Command."); } } //worldedit section List<String> play = plugin.getConfig().getStringList(player.getName()); if(msg.contains("//") || msg.contains("/we") || (msg.contains("/worldedit"))){ if(!play.contains("worldedit") && !play.contains("override")){ event.setCancelled(true); player.sendMessage(ChatColor.RED + "You May Not Use This Command. " + ChatColor.AQUA + "Donate at store.purepvp.ca to Gain Access"); } } //helper section List<String> helper = plugin.getConfig().getStringList("Helper"); for(String block : helper){ if(msg.contains(block)){ if(!plugin.getConfig().getStringList(player.getName()).contains("helper") && !plugin.getConfig().getStringList(player.getName()).contains("override")){ event.setCancelled(true); player.sendMessage(ChatColor.RED + "You May Not Use This Command."); } } } //mod section List<String> mod = plugin.getConfig().getStringList("Mod"); for(String block : mod){ if(msg.contains(block)){ if(!plugin.getConfig().getStringList(player.getName()).contains("mod") && !plugin.getConfig().getStringList(player.getName()).contains("override")){ event.setCancelled(true); player.sendMessage(ChatColor.RED + "You May Not Use This Command."); } } } //admin section List<String> admin = plugin.getConfig().getStringList("Admin"); for(String block : admin){ if(msg.contains(block)){ if(!plugin.getConfig().getStringList(player.getName()).contains("admin") && !plugin.getConfig().getStringList(player.getName()).contains("override")){ event.setCancelled(true); player.sendMessage(ChatColor.RED + "You May Not Use This Command."); } } } //owner section List<String> owner = plugin.getConfig().getStringList("Owner"); for(String block : owner){ if(msg.contains(block)){ if(!plugin.getConfig().getStringList(player.getName()).contains("owner") && !plugin.getConfig().getStringList(player.getName()).contains("override")){ event.setCancelled(true); player.sendMessage(ChatColor.RED + "You May Not Use This Command."); } } } //donor section List<String> donor = plugin.getConfig().getStringList("Donor"); for(String block : donor){ if(msg.contains(block)){ if(!plugin.getConfig().getStringList(player.getName()).contains("donor") && !plugin.getConfig().getStringList(player.getName()).contains("override")){ event.setCancelled(true); player.sendMessage(ChatColor.RED + "You May Not Use This Command."); } } } if(mutedPlayers2.containsKey(player)){ player.sendMessage(ChatColor.GOLD + "Do Not Spam Commands"); event.setCancelled(true); }else{ int muteTime = plugin.getConfig().getInt("CommandCooldown"); mute2(muteTime, player); } } public void onPlayerChat(PlayerChatEvent event){ Player player = event.getPlayer(); if(mutedPlayers.containsKey(player)){ player.sendMessage(ChatColor.GOLD + "Do Not Spam Chat"); event.setCancelled(true); }else{ int muteTime = plugin.getConfig().getInt("ChatCooldown"); mute(muteTime, player); } } public void mute(final int secondsDuration, final Player targetPlayer){ mutedPlayers.put(targetPlayer.getName(), null); plugin.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable(){ int timer = secondsDuration; @Override public void run() { if(timer != -1){ if(timer != 0){ timer -= 1; } else{ mutedPlayers.remove(targetPlayer.getName()); } } } }, 0L, 20L); } public void mute2(final int secondsDuration, final Player targetPlayer){ mutedPlayers2.put(targetPlayer.getName(), null); plugin.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable(){ int timer = secondsDuration; @Override public void run() { if(timer != -1){ if(timer != 0){ timer -= 1; } else{ mutedPlayers2.remove(targetPlayer.getName()); } } } }, 0L, 20L); }} Thanks for reading/looking over my code. It means a lot.