Okay, so. Here is the error I get... Code: [15:27:15 INFO]: PorterK[/127.0.0.1:33594] logged in with entity id 314 at ([world] 48.2289285790128, 70.0, 251.71919792349917) [15:27:15 ERROR]: Could not pass event PlayerJoinEvent to Mortal_Games v0.1 org.bukkit.event.EventException at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:320) ~[bukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks] at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[bukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks] at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:486) [bukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks] at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:471) [bukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks] at net.minecraft.server.v1_7_R1.PlayerList.c(PlayerList.java:225) [bukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks] at net.minecraft.server.v1_7_R1.PlayerList.a(PlayerList.java:116) [bukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks] at net.minecraft.server.v1_7_R1.LoginListener.c(LoginListener.java:78) [bukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks] at net.minecraft.server.v1_7_R1.LoginListener.a(LoginListener.java:42) [bukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks] at net.minecraft.server.v1_7_R1.NetworkManager.a(NetworkManager.java:149) [bukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks] at net.minecraft.server.v1_7_R1.ServerConnection.c(SourceFile:134) [bukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks] at net.minecraft.server.v1_7_R1.MinecraftServer.u(MinecraftServer.java:655) [bukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks] at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:250) [bukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks] at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:545) [bukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks] at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java:457) [bukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks] at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:617) [bukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks] Caused by: java.lang.NullPointerException at me.porterk.mg.MortalAPI.getCash(MortalAPI.java:203) ~[?:?] at me.porterk.mg.MortalListener.scoreboard(MortalListener.java:39) ~[?:?] at me.porterk.mg.MortalListener.onPlayerLogin(MortalListener.java:60) ~[?:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_51] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_51] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_51] at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_51] at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:318) ~[bukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks] ... 14 more I have absolutely no idea how MySQL, which is what I have come to conclude it is referring to, could be a NullPointerException. Here are my classes: Main.java Code:java package me.porterk.mg; import java.io.IOException;import java.sql.Connection;import java.sql.SQLException;import java.sql.Statement; import org.bukkit.ChatColor;import org.bukkit.command.Command;import org.bukkit.command.CommandSender;import org.bukkit.configuration.file.FileConfiguration;import org.bukkit.entity.Player;import org.bukkit.plugin.java.JavaPlugin; public class Main extends JavaPlugin{public boolean SQL; FileConfiguration config = getConfig(); MySQL MySQL = new MySQL(this, config.getString("MySQL.host name"),config.getString("MySQL.port"), config.getString("MySQL.database"),config.getString("MySQL.username"), config.getString("MySQL.password"));Connection c = null; Statement statement;String database = config.getString("MySQL.database");public String tag = ChatColor.DARK_GRAY + "[" + ChatColor.DARK_RED + "MG" + ChatColor.DARK_GRAY + "]";public void onEnable(){ api().config(); SQL = config.getBoolean("MySQL.enabled"); config.addDefault("MySQL.username", "user");config.addDefault("MySQL.password", "pass");config.addDefault("MySQL.host name", "999.99.99.9");config.addDefault("MySQL.port", "8080");config.addDefault("MySQL.database", "mortal_games");config.addDefault("MySQL.enabled", false);config.addDefault("Dev Mode", false);try {config.save(api().configFile());} catch (IOException e1) {e1.printStackTrace();} if(SQL){c = MySQL.openConnection();}try{getServer().getPluginManager().registerEvents(new MortalListener(this), this);api().debugLog("Listener class registered!");}catch(NullPointerException e){e.printStackTrace();api().debugLog("Listener class not registered! (NullPointerException)");}api().debugLog("Plugin enabled!");} public void onDisable(){api().debugLog("Plugin disabled!");} public MortalAPI api() {return new MortalAPI(this);} public boolean onCommand(CommandSender s, Command cmd, String label, String[] args) { Player p = (Player) s; if(cmd.getName().equalsIgnoreCase("mg")){ if(args[0].equalsIgnoreCase("admin")){ api().addToChatChannel(p, api().adminChannel); } if(args[0].equalsIgnoreCase("dev")){ if(p.hasPermission("mortal.dev")){ if(args[1].equalsIgnoreCase("start")){ if(args[2].equalsIgnoreCase("game")){ api().startGame(); } }else{p.sendMessage(tag + ChatColor.GOLD + "Not enough arguments.");} } } } return false;}} MortalAPI.java Code:java package me.porterk.mg; import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Collections;import java.util.Date;import java.util.HashMap;import java.util.List; import org.bukkit.Bukkit;import org.bukkit.ChatColor;import org.bukkit.entity.Player;import org.bukkit.scoreboard.DisplaySlot;import org.bukkit.scoreboard.Objective;import org.bukkit.scoreboard.Score;import org.bukkit.scoreboard.Scoreboard;import org.bukkit.scoreboard.ScoreboardManager;import org.bukkit.scoreboard.Team; public class MortalAPI { Main plugin; public MortalAPI(Main plugin) {this.plugin = plugin;} public int beforeStart;public int preGameTime;protected boolean isGameOn;int cash;int teamNumber;Statement s = null;Connection c = null;String name;HashMap<Player, Integer> teamSelect = new HashMap<Player, Integer>();HashMap<Player, String> team = new HashMap<Player, String>();HashMap<String, Boolean> greenChannel = new HashMap<String, Boolean>();HashMap<String, Boolean> orangeChannel = new HashMap<String, Boolean>();HashMap<String, Boolean> spectateChannel = new HashMap<String, Boolean>();HashMap<String, Boolean> adminChannel = new HashMap<String, Boolean>(); public void config(){ File config = new File(plugin.getDataFolder() + "/config.yml");File dir = plugin.getDataFolder();try{if(!dir.exists()){dir.mkdirs();}if(!config.exists()){config.createNewFile();} }catch(IOException e){e.printStackTrace();} } public File configFile(){ File config = new File(plugin.getDataFolder() + "/config.yml"); return config;} public void debugLog(String logMessage){ if(plugin.config.getBoolean("Dev Mode")){Date date = new Date();SimpleDateFormat d1 = new SimpleDateFormat("MM-dd-yyyy");String t = d1.format(date);File directory = plugin.getDataFolder();File logFolder = new File(directory, "/log");File logFile = new File("plugins/Mortal Games/log/" + t + ".txt");try{if(!directory.exists()){directory.mkdirs();}if(!logFolder.exists()){logFolder.mkdirs();}if(!logFile.exists()){logFile.createNewFile();}FileWriter fw = new FileWriter(logFile, true);PrintWriter pw = new PrintWriter(fw);SimpleDateFormat d = new SimpleDateFormat("[MM/dd/yyyy HH:mm:ss]");String t1 = d.format(date);pw.println(t1 + logMessage);pw.flush();pw.close();}catch(IOException e){e.printStackTrace();}}} public boolean isGameOn(){ return isGameOn;} public void startGame(){ preGameTime = 301; beforeStart = plugin.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() { public void run(){ preGameTime--; switch(preGameTime){ case 300: plugin.getServer().broadcastMessage(ChatColor.GOLD + "Game starting in " + ChatColor.DARK_RED + "5 minutes");break;case 240: plugin.getServer().broadcastMessage(ChatColor.GOLD + "Game starting in " + ChatColor.DARK_RED + "4 minutes");break;case 180: plugin.getServer().broadcastMessage(ChatColor.GOLD + "Game starting in " + ChatColor.DARK_RED + "3 minutes");break;case 120: plugin.getServer().broadcastMessage(ChatColor.GOLD + "Game starting in " + ChatColor.DARK_RED + "2 minutes");break;case 60: plugin.getServer().broadcastMessage(ChatColor.GOLD + "Game starting in " + ChatColor.DARK_RED + "1 minute");break;case 30: plugin.getServer().broadcastMessage(ChatColor.GOLD + "Game starting in " + ChatColor.DARK_RED + "30 seconds");break;case 10: plugin.getServer().broadcastMessage(ChatColor.GOLD + "Game starting in " + ChatColor.DARK_RED + "10 seconds");break;case 9: plugin.getServer().broadcastMessage(ChatColor.GOLD + "Game starting in " + ChatColor.DARK_RED + "9 seconds");break;case 8: plugin.getServer().broadcastMessage(ChatColor.GOLD + "Game starting in " + ChatColor.DARK_RED + "8 seconds");break;case 7: plugin.getServer().broadcastMessage(ChatColor.GOLD + "Game starting in " + ChatColor.DARK_RED + "7 seconds");break;case 6: plugin.getServer().broadcastMessage(ChatColor.GOLD + "Game starting in " + ChatColor.DARK_RED + "6 seconds");break;case 5: plugin.getServer().broadcastMessage(ChatColor.GOLD + "Game starting in " + ChatColor.DARK_RED + "5 seconds");break;case 4: plugin.getServer().broadcastMessage(ChatColor.GOLD + "Game starting in " + ChatColor.DARK_RED + "4 seconds");break;case 3: plugin.getServer().broadcastMessage(ChatColor.GOLD + "Game starting in " + ChatColor.DARK_RED + "3 seconds");break;case 2: plugin.getServer().broadcastMessage(ChatColor.GOLD + "Game starting in " + ChatColor.DARK_RED + "2 seconds");break;case 1: plugin.getServer().broadcastMessage(ChatColor.GOLD + "Game starting in " + ChatColor.DARK_RED + "1 seconds");break;case 0: plugin.getServer().broadcastMessage(ChatColor.GREEN + "Prepare yourself," + ChatColor.DARK_RED + " mortal " +ChatColor.GREEN + ", the game is starting..."); debugLog("Game started"); return;} } }, 0L, 20L); } public void gameStart(){ List<Player> players = new ArrayList<Player>();for (Player player : Bukkit.getOnlinePlayers()) {players.add(player);} Collections.shuffle(players); teamNumber = 0;for (Player player : players) {teamSelect.put(player, teamNumber++);if (teamNumber >= 6) {team.put(player, "orange");orangeChannel.put(player.getName(), true);}else{team.put(player, "green");greenChannel.put(player.getName(), true);}} }public String getTeam(Player p){ return team.get(p);} public int getCash(Player p){ try{ name = p.getName();Statement cs = plugin.MySQL.openConnection().createStatement(); //THE ERROR IS HEREResultSet res = cs.executeQuery("SELECT * FROM mortal WHERE PlayerName = '" + name.toString() + "';"); if(!res.next()){plugin.statement.executeUpdate("INSERT INTO mortal (`PlayerName`, `inGameCash`, `totalCash`, " +"`totalKills`, `serverCash`, `rank`) VALUES ('" + p.getName() + "', '500', '500', '0', '0', 'Default');");}else{res.next();} if(res.getString("PlayerName") == null){ cash = 1; }else { cash = res.getInt("inGameCash");}} catch (SQLException e) {e.printStackTrace();}return cash;} public void addToChatChannel(Player p, HashMap<String, Boolean> channel){ if(channel != null){ if(!channel.containsKey(p.getName())){channel.put(p.getName(), true);}else{channel.put(p.getName(), false);} }} } MortalListener.java Code:java package me.porterk.mg; import java.sql.SQLException; import org.bukkit.Bukkit;import org.bukkit.ChatColor;import org.bukkit.entity.Player;import org.bukkit.event.EventHandler;import org.bukkit.event.Listener;import org.bukkit.event.player.AsyncPlayerChatEvent;import org.bukkit.event.player.PlayerJoinEvent;import org.bukkit.scoreboard.DisplaySlot;import org.bukkit.scoreboard.Objective;import org.bukkit.scoreboard.Score;import org.bukkit.scoreboard.Scoreboard;import org.bukkit.scoreboard.ScoreboardManager; public class MortalListener implements Listener{ Main plugin; public MortalListener(Main plugin) {this.plugin = plugin;} public MortalAPI api() {return new MortalAPI(null);} public void scoreboard(Player p) {Objective obj = p.getScoreboard().registerNewObjective(p.getName() + "_score", "dummy"); obj.setDisplaySlot(DisplaySlot.SIDEBAR);obj.setDisplayName(ChatColor.DARK_RED + "The Mortal Games"); Score cash = obj.getScore((Bukkit.getOfflinePlayer(ChatColor.GREEN + "Cash:")));cash.setScore(api().getCash(p)); p.setScoreboard(Bukkit.getServer().getScoreboardManager().getNewScoreboard());} @EventHandlerpublic void onPlayerLogin(PlayerJoinEvent e){ e.setJoinMessage(null); Player p = e.getPlayer();int playerCount = p.getServer().getOnlinePlayers().length; if(playerCount < 10){p.sendMessage(ChatColor.GOLD + "Welcome, " + ChatColor.GREEN + p.getDisplayName() +ChatColor.GOLD + " to " + ChatColor.DARK_RED + "The Mortal Games");p.sendMessage(ChatColor.BLUE + "Visit our website at" + ChatColor.RED + " [URL]http://gld.bz[/URL]!");p.sendMessage(ChatColor.GOLD + "There are currently " + ChatColor.DARK_RED + playerCount+ "/10" + ChatColor.GOLD +" players online! :)");this.scoreboard(p);p.sendMessage("Scoreboard added");}else if(playerCount >= 10){p.sendMessage(ChatColor.GOLD + "Welcome to " + ChatColor.DARK_RED + "The Mortal Games");p.sendMessage(ChatColor.BLUE + "Visit our website at" + ChatColor.RED + " [URL]http://gld.bz[/URL]!");p.sendMessage(ChatColor.DARK_RED + "" +ChatColor.ITALIC + "Currently the game is full.");} if(p.isOp()){p.sendMessage(ChatColor.AQUA + "Type /admin to get to admin chat!");} if(playerCount == 10){api().startGame();} } @EventHandlerpublic void onPlayerChat(AsyncPlayerChatEvent e){ } } Thanks for any help. The SQL library I am using is Husky's. Super epic bump of helpingness EDIT by Moderator: merged posts, please use the edit button instead of double posting.
It doesn't seem to be. My other Methods work. For whatever reason anything that calls upon that MySQL object throws me a NullPointerException EDIT by Moderator: merged posts, please use the edit button instead of double posting.