PlayerJoinEvent and EntityDeathEvent w/ MySQL DB

Discussion in 'Plugin Development' started by Dr_Pixelz, Jan 1, 2016.

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

    Dr_Pixelz

    I am currently having an issue getting Bukkit to pick up on the fact that I player has joined my server, it doesn't seem to be noticing, infact it seems as though all of my EventHandlers are not working at all, none seem to be executing any of the code they are supposed to.
    Main.class
    Code:
    package me.sage.hopkins.TS.Kronos;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.util.Random;
    
    import org.bukkit.ChatColor;
    import org.bukkit.Color;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.entity.EntityDeathEvent;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.event.player.PlayerLoginEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class Main extends JavaPlugin{
       
        @Override
        public void onEnable(){
            getLogger().info("Custom Plugin Enabled!!");
           
        }
        @Override
        public void onDisable(){
            getLogger().info("Custom Plugin Disabled!");
           
        }
        @EventHandler
        public void onEntityKill(EntityDeathEvent event){
            event.getEntity().getKiller().sendMessage("It works!");
           
            int random = RandomGen(10, 1);
            try{
                Connection connect = null;
                connect = dbConnect.getConnection();
               
                PreparedStatement statement = connect.prepareStatement("UPDATE custom_Plugin_Data_Temp SET money =? WHERE username=?;");
                statement.setInt(1, random);
                statement.setString(2, event.getEntity().getKiller().getName());
                statement.executeQuery();
                event.getEntity().getKiller().sendMessage(ChatColor.GREEN + "You recieved " + ChatColor.GOLD +  random + ChatColor.GREEN + " for killing a " + ChatColor.RED + event.getEntity().getType().toString() + ChatColor.GREEN + "!");
            }catch(Exception e){
                e.printStackTrace();
            }
       
        }
        @EventHandler
        public void onPlayerLogin(PlayerJoinEvent event){
            try{
                Connection connect = null;
                connect = dbConnect.getConnection();
                PreparedStatement statement2 = connect.prepareStatement("INSERT INTO `custom_Plugin_Data_Temp`(username, money) VALUES(?,0);");
                statement2.setString(1, event.getPlayer().getName());
                statement2.executeQuery();
                statement2.execute();
                event.getPlayer().sendMessage("You have been added to the database!");
               
            }catch(Exception e){
                e.printStackTrace();
            }
        }
    
       
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
           
            if(cmd.getName().equalsIgnoreCase("money")){           
               
                try{
                    Connection connect = null;
                    connect = dbConnect.getConnection();
                   
                   
                    PreparedStatement statement = connect.prepareStatement("SELECT money FROM custom_Plugin_Data_Temp WHERE username=?;");
                    statement.setString(1, sender.getName().toString());
                    statement.executeQuery();
                    ResultSet result = statement.getResultSet();
                    int value = result.getInt(2);
                    sender.sendMessage(ChatColor.AQUA + "You have $" + value + ".");
                }catch(Exception event){
                    event.printStackTrace();
                }
               
               
            }
               
               
       
           
            return false;
        }
        public int RandomGen(int max, int min){
            Random random = new Random();
            int random_return = random.nextInt(max - min + 1) + min;
           
            return random_return;
           
        }
       
       
    }
    
    dbConnect.class
    Code:
    package me.sage.hopkins.TS.Kronos;
    
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import java.sql.Connection;
    
    public class dbConnect {
        public static Connection getConnection() throws Exception {
            try{
           
            String driver = "com.mysql.jdbc.Driver";
            String connect = "jdbc:mysql://***.***.**.**:3306/*********";
            String user = "*********";
            String pass = "************";
            Class.forName(driver);
           
            Connection con = DriverManager.getConnection(connect, user, pass);
           
            return con;
            }catch(Exception e){
                e.printStackTrace();
            }
            return null;
        }
       
    
    }
    
    Thanks in advanced!
     
  2. Offline

    BlueCraftMC

    You need to RegisterEvents on the onEnable. In the onEnable, put
    Bukkit.getServer().getPluginManager().registerEvents(this, this); to register events. Then your event handler should be working.
     
    Last edited: Jan 1, 2016
  3. Offline

    Dr_Pixelz

    Thanks for the help. Now I am getting the EventHandler to return something! Thanks alot.
     
  4. Offline

    Zombie_Striker

    Please stick to convention. Package names should be lower case.

    BTW: are you Sage Hopkins?

    You do not need to log your own plugin. Bukkit already logs your plugins for you.
    This method does nothing. As such, you can remove it.

    Please do not name your main class "Main". Instead, use either your plugin's name or "Plugin".
    You never close the connection. This will definitely cause a problem later on.
     
  5. Offline

    Dr_Pixelz

    Thanks for the information. Now Ill make the changes when I get the chance, as for now I am encountering an error when attempting to pull and int out of a ResulSet. Heres the code, and the error.

    Code:
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
           
            if(cmd.getName().equalsIgnoreCase("money")){           
               
                try{
                    Connection connect = null;
                    connect = dbConnect.getConnection();
                   
                   
                    PreparedStatement statement = connect.prepareStatement("SELECT money FROM custom_Plugin_Data_Temp WHERE username=?;");
                    statement.setString(1, sender.getName().toString());
                    statement.executeQuery();
                    ResultSet result = statement.getResultSet();
                    int value = result.getInt(2);
                    sender.sendMessage(ChatColor.AQUA + "You have $" + value + ".");
                }catch(Exception event){
                    event.printStackTrace();
                }
               
               
            }
               
               
       
           
            return false;
        }
    Code:
    [21:09:15] [Server thread/INFO]: Starting minecraft server version 1.8.8
    [21:09:15] [Server thread/INFO]: Loading properties
    [21:09:15] [Server thread/INFO]: Default game type: SURVIVAL
    [21:09:15] [Server thread/INFO]: Generating keypair
    [21:09:15] [Server thread/INFO]: Starting Minecraft server on *:25565
    [21:09:15] [Server thread/INFO]: Using default channel type
    [21:09:15] [Server thread/INFO]: This server is running CraftBukkit version git-Bukkit-d3e0b6f (MC: 1.8.8) (Implementing API version 1.8.8-R0.1-SNAPSHOT)
    [21:09:15] [Server thread/INFO]: [CustomPlugin_Sage_Hopkins] Loading CustomPlugin_Sage_Hopkins v1.0
    [21:09:15] [Server thread/INFO]: Preparing level "world"
    [21:09:15] [Server thread/INFO]: Preparing start region for level 0 (Seed: 2336942017392119719)
    [21:09:16] [Server thread/INFO]: Preparing start region for level 1 (Seed: 2336942017392119719)
    [21:09:16] [Server thread/INFO]: Preparing start region for level 2 (Seed: 2336942017392119719)
    [21:09:16] [Server thread/INFO]: [CustomPlugin_Sage_Hopkins] Enabling CustomPlugin_Sage_Hopkins v1.0
    [21:09:16] [Server thread/INFO]: [CustomPlugin_Sage_Hopkins] Custom Plugin Enabled!!
    [21:09:16] [Server thread/INFO]: Server permissions file permissions.yml is empty, ignoring it
    [21:09:16] [Server thread/INFO]: Done (1.370s)! For help, type "help" or "?"
    [21:09:21] [User Authenticator #1/INFO]: UUID of player crazylady77 is a1ecfd09-b798-4e63-ba31-c9a98215c994
    [21:09:22] [Server thread/INFO]: crazylady77[/127.0.0.1:52182] logged in with entity id 152 at ([world]717.3597422554476, 88.0, 33.84999278114594)
    [21:09:38] [Server thread/WARN]: java.sql.SQLException: Before start of result set
    [21:09:38] [Server thread/WARN]:     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
    [21:09:38] [Server thread/WARN]:     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
    [21:09:38] [Server thread/WARN]:     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
    [21:09:38] [Server thread/WARN]:     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
    [21:09:38] [Server thread/WARN]:     at com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:841)
    [21:09:38] [Server thread/WARN]:     at com.mysql.jdbc.ResultSetImpl.getInt(ResultSetImpl.java:2672)
    [21:09:38] [Server thread/WARN]:     at me.sage.hopkins.TS.Kronos.Main.onEntityKill(Main.java:47)
    [21:09:38] [Server thread/WARN]:     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    [21:09:38] [Server thread/WARN]:     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    [21:09:38] [Server thread/WARN]:     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    [21:09:38] [Server thread/WARN]:     at java.lang.reflect.Method.invoke(Unknown Source)
    [21:09:38] [Server thread/WARN]:     at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:300)
    [21:09:38] [Server thread/WARN]:     at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
    [21:09:38] [Server thread/WARN]:     at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:501)
    [21:09:38] [Server thread/WARN]:     at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:486)
    [21:09:38] [Server thread/WARN]:     at org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory.callEntityDeathEvent(CraftEventFactory.java:361)
    [21:09:38] [Server thread/WARN]:     at net.minecraft.server.v1_8_R3.EntityLiving.die(EntityLiving.java:864)
    [21:09:38] [Server thread/WARN]:     at net.minecraft.server.v1_8_R3.EntityCreeper.die(EntityCreeper.java:137)
    [21:09:38] [Server thread/WARN]:     at net.minecraft.server.v1_8_R3.EntityLiving.damageEntity(EntityLiving.java:802)
    [21:09:38] [Server thread/WARN]:     at net.minecraft.server.v1_8_R3.EntityMonster.damageEntity(EntityMonster.java:42)
    [21:09:38] [Server thread/WARN]:     at net.minecraft.server.v1_8_R3.EntityHuman.attack(EntityHuman.java:995)
    [21:09:38] [Server thread/WARN]:     at net.minecraft.server.v1_8_R3.EntityPlayer.attack(EntityPlayer.java:1048)
    [21:09:38] [Server thread/WARN]:     at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:1289)
    [21:09:38] [Server thread/WARN]:     at net.minecraft.server.v1_8_R3.PacketPlayInUseEntity.a(SourceFile:52)
    [21:09:38] [Server thread/WARN]:     at net.minecraft.server.v1_8_R3.PacketPlayInUseEntity.a(SourceFile:11)
    [21:09:38] [Server thread/WARN]:     at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13)
    [21:09:38] [Server thread/WARN]:     at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    [21:09:38] [Server thread/WARN]:     at java.util.concurrent.FutureTask.run(Unknown Source)
    [21:09:38] [Server thread/WARN]:     at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44)
    [21:09:38] [Server thread/WARN]:     at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:673)
    [21:09:38] [Server thread/WARN]:     at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:335)
    [21:09:38] [Server thread/WARN]:     at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:629)
    [21:09:38] [Server thread/WARN]:     at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:537)
    [21:09:38] [Server thread/WARN]:     at java.lang.Thread.run(Unknown Source)
    [21:09:50] [Server thread/INFO]: crazylady77 issued server command: /money
    [21:09:50] [Server thread/WARN]: java.sql.SQLException: Before start of result set
    [21:09:50] [Server thread/WARN]:     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
    [21:09:50] [Server thread/WARN]:     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
    [21:09:50] [Server thread/WARN]:     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
    [21:09:50] [Server thread/WARN]:     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
    [21:09:50] [Server thread/WARN]:     at com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:841)
    [21:09:50] [Server thread/WARN]:     at com.mysql.jdbc.ResultSetImpl.getInt(ResultSetImpl.java:2672)
    [21:09:50] [Server thread/WARN]:     at me.sage.hopkins.TS.Kronos.Main.onCommand(Main.java:87)
    [21:09:50] [Server thread/WARN]:     at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
    [21:09:50] [Server thread/WARN]:     at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:140)
    [21:09:50] [Server thread/WARN]:     at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:620)
    [21:09:50] [Server thread/WARN]:     at net.minecraft.server.v1_8_R3.PlayerConnection.handleCommand(PlayerConnection.java:1106)
    [21:09:50] [Server thread/WARN]:     at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:966)
    [21:09:50] [Server thread/WARN]:     at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(SourceFile:37)
    [21:09:50] [Server thread/WARN]:     at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(SourceFile:9)
    [21:09:50] [Server thread/WARN]:     at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13)
    [21:09:50] [Server thread/WARN]:     at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    [21:09:50] [Server thread/WARN]:     at java.util.concurrent.FutureTask.run(Unknown Source)
    [21:09:50] [Server thread/WARN]:     at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44)
    [21:09:50] [Server thread/WARN]:     at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:673)
    [21:09:50] [Server thread/WARN]:     at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:335)
    [21:09:50] [Server thread/WARN]:     at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:629)
    [21:09:50] [Server thread/WARN]:     at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:537)
    [21:09:50] [Server thread/WARN]:     at java.lang.Thread.run(Unknown Source)
    [21:10:05] [Server thread/ERROR]: Could not pass event EntityDeathEvent to CustomPlugin_Sage_Hopkins v1.0
    org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[cb.jar:git-Bukkit-d3e0b6f]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[cb.jar:git-Bukkit-d3e0b6f]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:501) [cb.jar:git-Bukkit-d3e0b6f]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:486) [cb.jar:git-Bukkit-d3e0b6f]
        at org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory.callEntityDeathEvent(CraftEventFactory.java:361) [cb.jar:git-Bukkit-d3e0b6f]
        at net.minecraft.server.v1_8_R3.EntityLiving.die(EntityLiving.java:864) [cb.jar:git-Bukkit-d3e0b6f]
        at net.minecraft.server.v1_8_R3.EntityLiving.damageEntity(EntityLiving.java:802) [cb.jar:git-Bukkit-d3e0b6f]
        at net.minecraft.server.v1_8_R3.EntityBat.damageEntity(SourceFile:190) [cb.jar:git-Bukkit-d3e0b6f]
        at net.minecraft.server.v1_8_R3.Entity.burnFromLava(Entity.java:329) [cb.jar:git-Bukkit-d3e0b6f]
        at net.minecraft.server.v1_8_R3.Entity.K(Entity.java:307) [cb.jar:git-Bukkit-d3e0b6f]
        at net.minecraft.server.v1_8_R3.EntityLiving.K(EntityLiving.java:160) [cb.jar:git-Bukkit-d3e0b6f]
        at net.minecraft.server.v1_8_R3.EntityInsentient.K(EntityInsentient.java:149) [cb.jar:git-Bukkit-d3e0b6f]
        at net.minecraft.server.v1_8_R3.Entity.t_(Entity.java:232) [cb.jar:git-Bukkit-d3e0b6f]
        at net.minecraft.server.v1_8_R3.EntityLiving.t_(EntityLiving.java:1437) [cb.jar:git-Bukkit-d3e0b6f]
        at net.minecraft.server.v1_8_R3.EntityInsentient.t_(EntityInsentient.java:193) [cb.jar:git-Bukkit-d3e0b6f]
        at net.minecraft.server.v1_8_R3.EntityBat.t_(SourceFile:101) [cb.jar:git-Bukkit-d3e0b6f]
        at net.minecraft.server.v1_8_R3.World.entityJoinedWorld(World.java:1420) [cb.jar:git-Bukkit-d3e0b6f]
        at net.minecraft.server.v1_8_R3.World.g(World.java:1398) [cb.jar:git-Bukkit-d3e0b6f]
        at net.minecraft.server.v1_8_R3.World.tickEntities(World.java:1269) [cb.jar:git-Bukkit-d3e0b6f]
        at net.minecraft.server.v1_8_R3.WorldServer.tickEntities(WorldServer.java:560) [cb.jar:git-Bukkit-d3e0b6f]
        at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:727) [cb.jar:git-Bukkit-d3e0b6f]
        at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:335) [cb.jar:git-Bukkit-d3e0b6f]
        at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:629) [cb.jar:git-Bukkit-d3e0b6f]
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:537) [cb.jar:git-Bukkit-d3e0b6f]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_65]
    Caused by: java.lang.NullPointerException
        at me.sage.hopkins.TS.Kronos.Main.onEntityKill(Main.java:36) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_65]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_65]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_65]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_65]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:300) ~[cb.jar:git-Bukkit-d3e0b6f]
        ... 24 more
    [21:12:53] [Server thread/INFO]: Stopping the server
    [21:12:53] [Server thread/INFO]: Stopping server
    [21:12:53] [Server thread/INFO]: [CustomPlugin_Sage_Hopkins] Disabling CustomPlugin_Sage_Hopkins v1.0
    [21:12:53] [Server thread/INFO]: [CustomPlugin_Sage_Hopkins] Custom Plugin Disabled!
    [21:12:53] [Server thread/INFO]: Saving players
    [21:12:53] [Server thread/INFO]: crazylady77 lost connection: Server closed
    [21:12:53] [Server thread/INFO]: crazylady77 left the game.
    [21:12:54] [Server thread/INFO]: Saving worlds
    [21:12:54] [Server thread/INFO]: Saving chunks for level 'world'/Overworld
    [21:12:54] [Server thread/INFO]: Saving chunks for level 'world_nether'/Nether
    [21:12:54] [Server thread/INFO]: Saving chunks for level 'world_the_end'/The End
    
    Still stuck on the issue...Anyone have any ideas?

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jan 2, 2016
Thread Status:
Not open for further replies.

Share This Page