Mistake - Create catalog

Discussion in 'BungeeCord Plugin Development' started by Dawid, May 15, 2016.

Thread Status:
Not open for further replies.
  1. Hello, i had a problem... When i run BungeeCord I had that mistake:

    Code (Text):
    [WARNING] Exception encountered when loading plugin: TimeCounter
    java.lang.NullPointerException
        at me.xcraftrayx.pl.MySQL.createTables(MySQL.java:122)
        at me.xcraftrayx.pl.TimeCounter.onEnable(TimeCounter.java:22)
        at net.md_5.bungee.api.plugin.PluginManager.enablePlugins(PluginManager.java:227)
        at net.md_5.bungee.BungeeCord.start(BungeeCord.java:277)
        at net.md_5.bungee.BungeeCordLauncher.main(BungeeCordLauncher.java:111)
        at net.md_5.bungee.Bootstrap.main(Bootstrap.java:15)
     
    And BungeeCord don't create any folder in /plugins

    My class MySQL:
    Code (Text):
    package me.xcraftrayx.pl;

    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.Writer;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.sql.Timestamp;
    import java.util.LinkedList;
    import java.util.List;
    import java.util.Scanner;
    import java.util.StringTokenizer;

    public class MySQL {

        private static Connection conn;
        private static Statement stat;
        private static String password, password2, host, host2, user, user2, database, database2, port, port2;
       
        public static final String DRIVER = "com.mysql.jdbc.Driver";
       
        public static void start()
        {
            File katalog = TimeCounter.dataFolder;
            if(!katalog.exists())
            {
                katalog.mkdirs();
            }
            File config = new File(katalog, "config.yml");
            if(!config.exists())
            {
                try
                {
                    config.createNewFile();
                    Writer writer = new BufferedWriter(new FileWriter(config));
                    ((BufferedWriter)writer).write("config:");         ((BufferedWriter)writer).newLine();
                    ((BufferedWriter)writer).write("  MySQL:");     ((BufferedWriter)writer).newLine();
                    ((BufferedWriter)writer).write("    HOST: localhost");     ((BufferedWriter)writer).newLine();
                    ((BufferedWriter)writer).write("    USER: root");     ((BufferedWriter)writer).newLine();
                    ((BufferedWriter)writer).write("    PASS: password");     ((BufferedWriter)writer).newLine();
                    ((BufferedWriter)writer).write("    DATABASE: database");     ((BufferedWriter)writer).newLine();
                    ((BufferedWriter)writer).write("    PORT: 3306");     ((BufferedWriter)writer).newLine();
                    ((BufferedWriter)writer).close();
                }
                catch (IOException e)
                {
                    e.printStackTrace();
                }
            }
            StringTokenizer token;
            try
            {
            @SuppressWarnings("resource")
            Scanner odczyt = new Scanner(config);
            while(odczyt.hasNextLine()){
                token = new StringTokenizer(odczyt.nextLine(),":");
                while(token.hasMoreElements()){
                    String st = String.valueOf(token.nextToken());
                    if(st.equals("    PASS")){
                        password = token.nextToken();
                        password2 = password.replace(" ", "");
                    }
                    if(st.equals("    HOST")){
                        host = token.nextToken();
                        host2 = host.replace(" ", "");
                    }
                    if(st.equals("    USER")){
                        user = token.nextToken();
                        user2 = user.replace(" ", "");
                    }
                    if(st.equals("    DATABASE")){
                        database = token.nextToken();
                        database2 = database.replace(" ", "");
                    }
                    if(st.equals("    PORT")){
                        port = token.nextToken();
                        port2 = port.replace(" ", "");
                    }
                    }
                }
            }

            catch (IOException e)
            {
                e.printStackTrace();
            }

            try
            {
                Class.forName(MySQL.DRIVER);
            }
            catch (ClassNotFoundException e1)
            {
                System.err.println("Brak sterownika JDBC");
                e1.printStackTrace();
            }

            try
            {
                conn = DriverManager.getConnection("jdbc:mysql://" + host2 + ":" + port2 + "/" + database2 + "?autoReconnect=true" + "&user=" + user2 + "&password=" + password2);
                stat = conn.createStatement();
            } catch (SQLException e)
            {
                System.err.println("Problem z otwarciem polaczenia");
                e.printStackTrace();
            }
            MySQL.createTables();
        }
       
          public static boolean createTables()
          {
              String createTable = "CREATE TABLE IF NOT EXISTS BungeeAllServers (id INTEGER AUTO_INCREMENT, Servers varchar(11), PRIMARY KEY(id))";
              String createTable2 = "CREATE TABLE IF NOT EXISTS BungeeTimeInServer (id INTEGER AUTO_INCREMENT, NickID int(11), ServerID int(11), Time int(11), PRIMARY KEY(id))";
          try
          {
              stat.execute(createTable);
              stat.execute(createTable2);
          } catch (SQLException e)
          {
              System.err.println("Blad przy tworzeniu tabeli");
              e.printStackTrace();
              return false;
          }
              return true;
          }
         
          public static boolean addUser(String username, String server, int time)
          {
                try {
                    PreparedStatement prepStmt = conn.prepareStatement("INSERT INTO BungeeTimeInServer (NickID, ServerID, Time) VALUES ((SELECT ID FROM LobbyInventory WHERE username = '" + username + "'), (SELECT ID FROM BungeeAllServers WHERE Servers = '" + server + "'), " + time + ");");
                    prepStmt.execute();
                } catch (SQLException e) {
                    System.err.println("Blad przy wstawianiu uzytkownika");
                    e.printStackTrace();
                    return false;
                }
                return true;
          }
         
            public static boolean updateUser(String username, String server, int time) {
                try {
                    PreparedStatement prepStmt = conn.prepareStatement("UPDATE BungeeTimeInServer SET (NickID, ServerID, Time) VALUES ((SELECT ID FROM LobbyInventory WHERE username = '" + username + "'), (SELECT ID FROM BungeeAllServers WHERE Servers = '" + server + "'), "+ time +");");
                    prepStmt.execute();
                } catch (SQLException e) {
                    System.err.println("Blad przy aktualizowaniu uzytkownika");
                    e.printStackTrace();
                    return false;
                }
                return true;
            }
           
              public static List<String> selectUser(String username, String server) {
                    List<String> users = new LinkedList<String>();
                         try {
                             ResultSet result = stat.executeQuery("SELECT NickID, ServerID FROM BungeeTimeInServer inner join LobbyInventory on BungeeTimeInServer.NickID = LobbyInventory.ID join BungeeAllServers on BungeeTimeInServer.ServerID = BungeeAllServers.id WHERE BungeeAllServers.Servers = '" + server + "' AND LobbyInventory.username = '" + username + "';");
                             while(result.next()) {
                                 username = result.getString("NickID");
                                 server = result.getString("ServerID");
                                 users.add(username);
                                 users.add(server);
                             }
                         } catch (SQLException e) {
                             e.printStackTrace();
                             return null;
                         }
                         return users;
              }
         
          public static void closeConnection()
          {
              try
              {
                  conn.close();
              } catch (SQLException e)
              {
                  System.err.println("Problem z zamknieciem polaczenia");
                  e.printStackTrace();
              }
          }
    }
     
     
  2. Try create your tables in the onEnable and not in the onLoad.
     
    • Informative Informative x 1
  3. To closed... It is solved...
     
Thread Status:
Not open for further replies.