Have a small Error while I want to set Points in MySQL (first time working with it). Code (MySQL) : Code:java package at.landen.db; import java.io.File;import java.io.IOException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException; import org.bukkit.configuration.file.FileConfiguration;import org.bukkit.configuration.file.YamlConfiguration; public class MySQL { private String ip; private String user; private String pass; private String db; private Connection con; public MySQL() throws SQLException{ File file = new File("plugins/QuickSurvivalGames/", "database.yml"); FileConfiguration cfg = YamlConfiguration.loadConfiguration(file); String db = "database."; cfg.addDefault(db+"host", "localhost"); cfg.addDefault(db+"user", "user"); cfg.addDefault(db+"pass", "pw"); cfg.addDefault(db+"datenbank", "db"); cfg.options().copyDefaults(true); try { cfg.save(file); } catch (IOException e) { System.err.println("Probleme beim Speichern!"); } this.ip = cfg.getString(db+"host"); this.user = cfg.getString(db+"user"); this.pass = cfg.getString(db+"pass"); this.db = cfg.getString(db+"datenbank"); update("CREATE TABLE IF NOT EXISTS QuickSG(id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(16), punkte INT)"); } public void update(String qr) throws SQLException{ Connection con = this.con; PreparedStatement st = null; st = con.prepareStatement(qr); st.executeUpdate(); } public Connection connect() throws ClassNotFoundException, SQLException{ Connection con = DriverManager.getConnection("jdbc:mysql://"+this.ip+":3306/"+this.db, this.user, this.pass); this.con = con; return con; } public Connection getConnection(){ return this.con; } public boolean hasConnection() throws SQLException{ return this.con != null || this.con.isValid(1); } public void closeRess(ResultSet rs, PreparedStatement st) throws SQLException{ if(rs != null){ rs.close(); } if(st != null){ st.close(); } } public void closeCon() throws SQLException{ this.con.close(); } } Code (LoginListener): Code:java package at.landen.listener; import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException; import org.bukkit.Bukkit;import org.bukkit.GameMode;import org.bukkit.Location;import org.bukkit.Material;import org.bukkit.World;import org.bukkit.entity.Player;import org.bukkit.event.EventHandler;import org.bukkit.event.Listener;import org.bukkit.event.player.PlayerJoinEvent;import org.bukkit.inventory.ItemStack;import org.bukkit.potion.PotionEffect;import org.bukkit.potion.PotionEffectType; import at.landen.db.MySQL;import at.landen.main.SurvivalGames; public class PlayerJoinListener implements Listener { private SurvivalGames pl; public PlayerJoinListener(SurvivalGames plugin){ this.pl = plugin; } @EventHandler public void hasPointsSet(PlayerJoinEvent e) throws SQLException{ givePoint(e.getPlayer().getName(), 50); } @EventHandlerpublic void onJoin(PlayerJoinEvent e){ final Player p = e.getPlayer(); if(pl.joinable){ for(int i = 0; i != 100; i++ ){ p.sendMessage(""); } e.setJoinMessage(pl.prefix+"Der Spieler §9"+p.getName()+" §6ist dem Spiel beigetretten."); for(Player all : Bukkit.getOnlinePlayers()){ all.showPlayer(all); } p.setGameMode(GameMode.SURVIVAL); p.setHealth(20); p.setFoodLevel(20); p.setFlying(false); pl.ingame.add(p); Bukkit.getScheduler().scheduleSyncDelayedTask(pl, new Runnable() { @SuppressWarnings("deprecation") public void run() { p.removePotionEffect(PotionEffectType.WEAKNESS); p.getInventory().clear(); p.getInventory().setArmorContents(null); p.updateInventory(); World w = Bukkit.getWorld(pl.getConfig().getString("SurvivalGames.lobby.World")); Double x = (pl.getConfig().getDouble("SurvivalGames.lobby.x")); Double y = (pl.getConfig().getDouble("SurvivalGames.lobby.y")); Double z = (pl.getConfig().getDouble("SurvivalGames.lobby.z")); p.teleport(new Location(w, x, y, z)); } }, 5); }else if(!pl.joinable){ e.setJoinMessage(null); p.addPotionEffect(new PotionEffect(PotionEffectType.WEAKNESS, 250000, 250000)); p.setHealth(20); p.getInventory().clear(); p.getInventory().setHelmet(new ItemStack (0, 1)); p.getInventory().setChestplate(new ItemStack (0, 1)); p.getInventory().setLeggings(new ItemStack (0, 1)); p.getInventory().setBoots(new ItemStack (0, 1)); p.setFoodLevel(20); p.setFireTicks(0); p.setGameMode(GameMode.CREATIVE); pl.dead.add(p); World w = Bukkit.getWorld(pl.getConfig().getString("SurvivalGames.Spec.World")); Double x = (pl.getConfig().getDouble("SurvivalGames.Spec.x")); Double y = (pl.getConfig().getDouble("SurvivalGames.Spec.y")); Double z = (pl.getConfig().getDouble("SurvivalGames.Spec.z")); p.teleport(new Location(w, x, y, z)); p.getInventory().addItem(new ItemStack(Material.COMPASS)); for(Player all : Bukkit.getOnlinePlayers()){ all.hidePlayer(p); } } } public void givePoint(String p, int pu) throws SQLException{ MySQL sql = this.pl.getMySQL(); if(punkteSpieler(p) == 0){ sql.update("INSERT INTO QuickSG (name, punkte) VALUES ('"+p+"', '"+pu+"')"); }else{ sql.update("UPDATE QuickSG SET punkte="+punkteSpieler(p)+" WHERE name="+p); }} public int punkteSpieler(String player) throws SQLException{ MySQL sql = this.pl.getMySQL(); Connection con = sql.getConnection(); ResultSet rs = null; PreparedStatement st = null; int punkte = 0; try { st = con.prepareStatement("SELECT * FROM QuickSG WHERE name=?"); st.setString(1, player); rs = st.executeQuery(); rs.last(); punkte = rs.getInt("punkte"); } catch (SQLException e) { e.printStackTrace(); }finally{ sql.closeRess(rs, st); } return punkte;} } Error: Code: 16:20:08 [SEVERE] Could not pass event PlayerJoinEvent to QuickSurvivalGames v1. 8 org.bukkit.event.EventException at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja va:427) at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav a:62) at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j ava:477) at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j ava:462) at net.minecraft.server.v1_5_R3.PlayerList.c(PlayerList.java:204) at net.minecraft.server.v1_5_R3.PlayerList.a(PlayerList.java:100) at net.minecraft.server.v1_5_R3.PendingConnection.d(PendingConnection.ja va:129) at net.minecraft.server.v1_5_R3.PendingConnection.c(PendingConnection.ja va:44) at net.minecraft.server.v1_5_R3.DedicatedServerConnectionThread.a(Dedica tedServerConnectionThread.java:41) at net.minecraft.server.v1_5_R3.DedicatedServerConnection.b(SourceFile:2 9) at net.minecraft.server.v1_5_R3.MinecraftServer.r(MinecraftServer.java:5 81) at net.minecraft.server.v1_5_R3.DedicatedServer.r(DedicatedServer.java:2 26) at net.minecraft.server.v1_5_R3.MinecraftServer.q(MinecraftServer.java:4 77) at net.minecraft.server.v1_5_R3.MinecraftServer.run(MinecraftServer.java :410) at net.minecraft.server.v1_5_R3.ThreadServerApplication.run(SourceFile:5 73) Caused by: java.lang.NullPointerException at at.landen.listener.PlayerJoinListener.punkteSpieler(PlayerJoinListene r.java:134) at at.landen.listener.PlayerJoinListener.givePoint(PlayerJoinListener.ja va:124) at at.landen.listener.PlayerJoinListener.hasPointsSet(PlayerJoinListener .java:37) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja va:425) ... 14 more > Thanks for Help
Landen22 Instead of throwing an exception on the void for your event, use try and catch. Edit: In German (icu speak german lol) (sorry google translate): Stattdessen werfen eine Ausnahme auf die Leere für Ihre Veranstaltung, Einsatz versuchen und zu fangen.
Like AdamQpzm said, I don't believe you're correctly set your variable that is being sent from "this.pl.getMySQL();"
Landen22 Could you also post your main class that extends JavaPlugin? That way we can gave a look see at that getSQL() method.
Nateb1121 Here: Code:java public class SurvivalGames extends JavaPlugin { //public PointsAPI points = (PointsAPI) Bukkit.getPluginManager().getPlugin("PointsAPI"); private MySQL sql; public String prefix = "§a[§6Quick§a-§bSurvivalGames§a] §6"; public ArrayList<Player> dead = new ArrayList<Player>(); public ArrayList<Player> ingame = new ArrayList<Player>(); public HashMap<Location, Inventory> sgchest = new HashMap<Location, Inventory>(); public int exp; public int expid; public int chestrefi; public int matchi; public int matchid; public int stop; public int stop1; public boolean joinable; public boolean onspawn; public boolean friendly; public int start; public int startid; public void onDisable(){ } public void onEnable(){ Bukkit.getMessenger().registerOutgoingPluginChannel(this, "BungeeCord"); try{ this.sql = new MySQL(); sql.connect(); }catch(Exception e){ } for(Player all : Bukkit.getOnlinePlayers()){ all.showPlayer(all); all.setGameMode(GameMode.SURVIVAL); } SG sg = new SG(this); getCommand("SurvivalGames").setExecutor(sg); getCommand("ig").setExecutor(sg); getCommand("punkte").setExecutor(sg); Bukkit.getPluginManager().registerEvents(new BlockBreakListener(this), this); Bukkit.getPluginManager().registerEvents(new BlockPlaceListener(), this); Bukkit.getPluginManager().registerEvents(new EntityDamageListener(this), this); Bukkit.getPluginManager().registerEvents(new PlayerChangeFoodLevel(this), this); Bukkit.getPluginManager().registerEvents(new PlayerJoinListener(this), this); Bukkit.getPluginManager().registerEvents(new PlayerLoginListener(this), this); Bukkit.getPluginManager().registerEvents(new PlayerMoveListener(this), this); Bukkit.getPluginManager().registerEvents(new PlayerPickupItemListener(this), this); Bukkit.getPluginManager().registerEvents(new ChestMananger(this), this); Bukkit.getPluginManager().registerEvents(new PlayerDeathListener(this), this); Bukkit.getPluginManager().registerEvents(new PlayerQuitListener(this), this); Bukkit.getPluginManager().registerEvents(new PlayerDropItemListener(this), this); Bukkit.getPluginManager().registerEvents(new SpectatorListener(this), this); Bukkit.getPluginManager().registerEvents(new PlayerPreCommandListener(), this); Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() { @SuppressWarnings("deprecation") public void run() { for(Player p : Bukkit.getOnlinePlayers()){ p.removePotionEffect(PotionEffectType.WEAKNESS); p.getInventory().clear(); p.getInventory().setArmorContents(null); p.setHealth(20); p.setFoodLevel(20); p.setFireTicks(0); p.setFlying(false); p.updateInventory(); if(dead.contains(p)){ dead.remove(p); } if(ingame.contains(p)){ ingame.remove(p); ingame.add(p); } p.showPlayer(p); World w = Bukkit.getWorld(getConfig().getString("SurvivalGames.lobby.World")); Double x = (getConfig().getDouble("SurvivalGames.lobby.x")); Double y = (getConfig().getDouble("SurvivalGames.lobby.y")); Double z = (getConfig().getDouble("SurvivalGames.lobby.z")); p.teleport(new Location(w, x, y, z)); } } },5L); this.joinable = true; this.onspawn = false; if(getConfig().getString("StartZeit") != null){ this.exp = getConfig().getInt("StartZeit"); }else{ int i = 120; getConfig().set("StartZeit", i); } this.start = 15; if(getConfig().getString("DeathMatchBeginn") != null){ this.matchi = getConfig().getInt("DeathMatchBeginn"); }else{ int i = 180; getConfig().set("DeathMatchBeginn", i); } start = 15; stop1 = 0; mapteleport(); } public MySQL getMySQL(){ return this.sql; } Not everything from the main but this what should be interesting
Landen22 You shouldn't be suppressing all the exceptions. It is very likely that an error occurred which you ignored .
fireblast709 what do you meen ? Don´t understand the context with my question Found the error by myself removed the sql.connect(); in try{ this.sql = new MySQL(); }catch(Exception e){ System.err.println("Konnt MySQL nicht starten!"); } EDIT by Moderator: merged posts, please use the edit button instead of double posting.