From 7758c5c581d7b961e98a10105019c6421cd77ed0 Mon Sep 17 00:00:00 2001 From: Rsl1122 Date: Thu, 5 Jan 2017 11:34:55 +0200 Subject: [PATCH] More Bugfixes (2) [2.0.0-DEV] Fixed Bugs: - LastGameMode no longer null (PlayerLoginEvent > PlayerJoinEvent) - Playtime no longer negative - Logintimes now updated - Serverdata now updating properly (PlayerLoginEvent > PlayerJoinEvent) Known bugs: - !! Database UserID is null when saving - (GamemodeTimes is handling weird) - (LastPlayed might be handling weird) - (Database saves multiples of known things.) - Locations not saved when player moves (UserID faulty) - !! Location ID not primary key --- .../plan/command/commands/InspectCommand.java | 55 +++--- .../plan/database/databases/SQLDB.java | 176 +++++++++--------- .../plan/datahandlers/ActivityHandler.java | 15 +- .../plan/datahandlers/BasicInfoHandler.java | 13 +- .../plan/datahandlers/DataHandler.java | 20 +- .../datahandlers/DemographicsHandler.java | 6 +- .../datahandlers/GamemodeTimesHandler.java | 22 +-- .../plan/datahandlers/NewPlayerCreator.java | 43 +++++ .../listeners/PlanPlayerListener.java | 15 +- .../src/com/djrapitops/plan/PlanLite.java | 6 +- 10 files changed, 197 insertions(+), 174 deletions(-) create mode 100644 Plan Advanced/src/com/djrapitops/plan/datahandlers/NewPlayerCreator.java diff --git a/Plan Advanced/src/com/djrapitops/plan/command/commands/InspectCommand.java b/Plan Advanced/src/com/djrapitops/plan/command/commands/InspectCommand.java index 5c247f3d5..f1aa9e3e1 100644 --- a/Plan Advanced/src/com/djrapitops/plan/command/commands/InspectCommand.java +++ b/Plan Advanced/src/com/djrapitops/plan/command/commands/InspectCommand.java @@ -34,58 +34,61 @@ public class InspectCommand extends SubCommand { @Override public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { String playerName = DataUtils.getPlayerDisplayname(args, sender); - + UUID uuid; try { uuid = UUIDFetcher.getUUIDOf(playerName); + if (uuid == null) { + throw new Exception("Username doesn't exist."); + } } catch (Exception e) { sender.sendMessage(Phrase.USERNAME_NOT_VALID.toString()); return true; } - + OfflinePlayer p = getOfflinePlayer(uuid); if (!p.hasPlayedBefore()) { sender.sendMessage(Phrase.USERNAME_NOT_SEEN.toString()); return true; } - + if (!plugin.getDB().wasSeenBefore(uuid)) { sender.sendMessage(Phrase.USERNAME_NOT_KNOWN.toString()); return true; } - + Date refreshDate = new Date(); - UserData data = plugin.getHandler().getCurrentData(uuid); + UserData data = plugin.getHandler().getCurrentData(uuid); ChatColor operatorColor = Phrase.COLOR_MAIN.color(); ChatColor textColor = Phrase.COLOR_SEC.color(); List msgs = new ArrayList<>(); - msgs.add(""+data.getLoginTimes()); - msgs.add(""+data.getBedLocation().getBlockX()); - msgs.add(""+data.getDemData().getGeoLocation()); - msgs.add(""+data.getGmTimes().keySet().toString()); - msgs.add(""+data.getIps().toString()); - msgs.add(""+data.getLastGamemode()); - msgs.add(""+data.getLastGmSwapTime()); - msgs.add(""+data.getLastPlayed()); - msgs.add(""+data.getLocation().getBlockX()); - msgs.add(""+data.getNicknames().toString()); - msgs.add(""+data.getRegistered()); - msgs.add(""+data.getTimesKicked()); - msgs.add(""+data.getUuid()); - msgs.add(operatorColor+"SERVER"); + msgs.add("Logintimes " + data.getLoginTimes()); + msgs.add("BedLocation " + data.getBedLocation().getBlockX()); + msgs.add("GeoLoc " + data.getDemData().getGeoLocation()); + msgs.add("GMTimes values " + data.getGmTimes().values().toString()); + msgs.add("Ips " + data.getIps().toString()); + msgs.add("Last gamemode " + data.getLastGamemode()); + msgs.add("Last gm swap time " + data.getLastGmSwapTime()); + msgs.add("Last Played" + data.getLastPlayed()); + msgs.add("Location " + data.getLocation().getBlockX()); + msgs.add("Nicknames " + data.getNicknames().toString()); + msgs.add("Registered " + data.getRegistered()); + msgs.add("TimesKicked " + data.getTimesKicked()); + msgs.add("Uuid " + data.getUuid()); + msgs.add(operatorColor + "SERVER"); ServerData sdata = plugin.getHandler().getServerData(); - msgs.add(""+sdata.getCommandUsage().keySet().toString()); - msgs.add(""+sdata.getNewPlayers()); - msgs.add(""+sdata.getPlayersOnline()); + msgs.add("Commands " + sdata.getCommandUsage().keySet().toString()); + msgs.add("New Players " + sdata.getNewPlayers()); + msgs.add("Online Players " + sdata.getPlayersOnline()); //header - sender.sendMessage(textColor + "-- [" + operatorColor + "PLAN - Inspect results: " + playerName +" - took "+DataFormatUtils.formatTimeAmountSinceDate(refreshDate, new Date())+ textColor + "] --"); - + sender.sendMessage(textColor + "-- [" + operatorColor + "PLAN - Inspect results: " + playerName + " - took " + DataFormatUtils.formatTimeAmountSinceDate(refreshDate, new Date()) + textColor + "] --"); + for (String message : msgs) { - sender.sendMessage(textColor+message); + sender.sendMessage(textColor + message); } - + sender.sendMessage(textColor + "-- o --"); return true; } diff --git a/Plan Advanced/src/com/djrapitops/plan/database/databases/SQLDB.java b/Plan Advanced/src/com/djrapitops/plan/database/databases/SQLDB.java index 4ccac3862..bc2e95c9f 100644 --- a/Plan Advanced/src/com/djrapitops/plan/database/databases/SQLDB.java +++ b/Plan Advanced/src/com/djrapitops/plan/database/databases/SQLDB.java @@ -306,99 +306,86 @@ public abstract class SQLDB extends Database { @Override public UserData getUserData(UUID uuid) { checkConnection(); - + // Check if user is in the database + if (!wasSeenBefore(uuid)) { + return null; + } + // Get the data try { UserData data = new UserData(getOfflinePlayer(uuid), new DemographicsData(), this); - if (wasSeenBefore(uuid)) { - PreparedStatement statement = connection.prepareStatement("SELECT * FROM " + userName + " WHERE UPPER(" + userColumnUUID + ") LIKE UPPER(?)"); - statement.setString(1, uuid.toString()); - ResultSet set = statement.executeQuery(); + PreparedStatement statement = connection.prepareStatement("SELECT * FROM " + userName + " WHERE UPPER(" + userColumnUUID + ") LIKE UPPER(?)"); + statement.setString(1, uuid.toString()); + ResultSet set = statement.executeQuery(); - String id = null; - while (set.next()) { - id = ""+set.getInt(userColumnID); - if (id == null) { - return null; - } - data.getDemData().setAge(set.getInt(userColumnDemAge)); - data.getDemData().setGender(Gender.parse(set.getString(userColumnDemGender))); - data.getDemData().setGeoLocation(set.getString(userColumnDemGeoLocation)); - data.setLastGamemode(MiscUtils.parseGM(set.getString(userColumnLastGM))); - data.setLastGmSwapTime(set.getLong(userColumnLastGMSwapTime)); - data.setPlayTime(set.getLong(userColumnPlayTime)); - data.setLoginTimes(set.getInt(userColumnLoginTimes)); - } - set.close(); - statement.close(); - - statement = connection.prepareStatement("SELECT * FROM " + locationName + " WHERE UPPER(" + locationColumnUserID + ") LIKE UPPER(?)"); - statement.setString(1, id); - set = statement.executeQuery(); - - List locations = new ArrayList<>(); - while (set.next()) { - locations.add(new Location(Bukkit.getWorld(set.getString(locationColumnWorld)), set.getInt(locationColumnCoordinatesX), 0, set.getInt(locationColumnCoordinatesZ))); - } - set.close(); - statement.close(); - data.addLocations(locations); - if (locations.isEmpty()) { - plugin.logToFile("DATABASE-SQLDB\nLocations list is empty"); - } else { - data.setLocation(locations.get(locations.size() - 1)); - } - - statement = connection.prepareStatement("SELECT * FROM " + nicknamesName + " WHERE UPPER(" + nicknamesColumnUserID + ") LIKE UPPER(?)"); - statement.setString(1, id); - set = statement.executeQuery(); - - List nicknames = new ArrayList<>(); - while (set.next()) { - nicknames.add(set.getString(nicknamesColumnNick)); - } - set.close(); - statement.close(); - data.addNicknames(nicknames); - - statement = connection.prepareStatement("SELECT * FROM " + ipsName + " WHERE UPPER(" + ipsColumnUserID + ") LIKE UPPER(?)"); - statement.setString(1, id); - set = statement.executeQuery(); - - List ips = new ArrayList<>(); - while (set.next()) { - try { - ips.add(InetAddress.getByName(set.getString(ipsColumnIP))); - } catch (SQLException | UnknownHostException e) { - } - } - set.close(); - statement.close(); - data.addIpAddresses(ips); - - statement = connection.prepareStatement("SELECT * FROM " + gamemodetimesName + " WHERE UPPER(" + gamemodetimesColumnUserID + ") LIKE UPPER(?)"); - statement.setString(1, id); - set = statement.executeQuery(); - - HashMap times = new HashMap<>(); - while (set.next()) { - times.put(GameMode.valueOf(set.getString(gamemodetimesColumnGamemode)), set.getLong(gamemodetimesColumnTime)); - } - set.close(); - statement.close(); - data.setGmTimes(times); - } else { - GameMode defaultGM = Bukkit.getServer().getDefaultGameMode(); - if (defaultGM != null) { - data.setLastGamemode(defaultGM); - } else { - data.setLastGamemode(GameMode.SURVIVAL); - } - data.setPlayTime(Long.parseLong("0")); - data.setTimesKicked(0); - data.setLoginTimes(1); - data.setLastGmSwapTime(Long.parseLong("0")); + while (set.next()) { + data.getDemData().setAge(set.getInt(userColumnDemAge)); + data.getDemData().setGender(Gender.parse(set.getString(userColumnDemGender))); + data.getDemData().setGeoLocation(set.getString(userColumnDemGeoLocation)); + data.setLastGamemode(MiscUtils.parseGM(set.getString(userColumnLastGM))); + data.setLastGmSwapTime(set.getLong(userColumnLastGMSwapTime)); + data.setPlayTime(set.getLong(userColumnPlayTime)); + data.setLoginTimes(set.getInt(userColumnLoginTimes)); } + set.close(); + statement.close(); + String userId = ""+getUserId(uuid.toString()); + + statement = connection.prepareStatement("SELECT * FROM " + locationName + " WHERE UPPER(" + locationColumnUserID + ") LIKE UPPER(?)"); + statement.setString(1, userId); + set = statement.executeQuery(); + + List locations = new ArrayList<>(); + while (set.next()) { + locations.add(new Location(Bukkit.getWorld(set.getString(locationColumnWorld)), set.getInt(locationColumnCoordinatesX), 0, set.getInt(locationColumnCoordinatesZ))); + } + set.close(); + statement.close(); + data.addLocations(locations); + if (locations.isEmpty()) { + plugin.logToFile("DATABASE-SQLDB\nLocations list is empty"); + } else { + data.setLocation(locations.get(locations.size() - 1)); + } + + statement = connection.prepareStatement("SELECT * FROM " + nicknamesName + " WHERE UPPER(" + nicknamesColumnUserID + ") LIKE UPPER(?)"); + statement.setString(1, userId); + set = statement.executeQuery(); + + List nicknames = new ArrayList<>(); + while (set.next()) { + nicknames.add(set.getString(nicknamesColumnNick)); + } + set.close(); + statement.close(); + data.addNicknames(nicknames); + + statement = connection.prepareStatement("SELECT * FROM " + ipsName + " WHERE UPPER(" + ipsColumnUserID + ") LIKE UPPER(?)"); + statement.setString(1, userId); + set = statement.executeQuery(); + + List ips = new ArrayList<>(); + while (set.next()) { + try { + ips.add(InetAddress.getByName(set.getString(ipsColumnIP))); + } catch (SQLException | UnknownHostException e) { + } + } + set.close(); + statement.close(); + data.addIpAddresses(ips); + + statement = connection.prepareStatement("SELECT * FROM " + gamemodetimesName + " WHERE UPPER(" + gamemodetimesColumnUserID + ") LIKE UPPER(?)"); + statement.setString(1, userId); + set = statement.executeQuery(); + + HashMap times = new HashMap<>(); + while (set.next()) { + times.put(GameMode.valueOf(set.getString(gamemodetimesColumnGamemode)), set.getLong(gamemodetimesColumnTime)); + } + set.close(); + statement.close(); + data.setGmTimes(times); return data; } catch (SQLException e) { plugin.logToFile("DATABASE-SQLDB\n" + e + "\n" + e.getCause()); @@ -535,7 +522,8 @@ public abstract class SQLDB extends Database { int userId = getUserId(uuid.toString()); try { - + int update = 0; + if (userId != -1) { String sql = "UPDATE " + userName + " SET " + userColumnDemAge + "=?, " + userColumnDemGender + "=?, " @@ -560,9 +548,10 @@ public abstract class SQLDB extends Database { statement.setLong(6, data.getPlayTime()); statement.setInt(7, data.getLoginTimes()); statement.setString(8, uuid.toString()); - - if (statement.executeUpdate() == 0) { - statement = connection.prepareStatement("INSERT INTO " + userName + " (" + update = statement.executeUpdate(); + } + if (update == 0) { + PreparedStatement statement = connection.prepareStatement("INSERT INTO " + userName + " (" + userColumnUUID + ", " + userColumnDemAge + ", " + userColumnDemGender + ", " @@ -577,6 +566,7 @@ public abstract class SQLDB extends Database { statement.setInt(2, data.getDemData().getAge()); statement.setString(3, data.getDemData().getGender().toString().toLowerCase()); statement.setString(4, data.getDemData().getGeoLocation()); + GameMode gm = data.getLastGamemode(); if (gm != null) { statement.setString(5, data.getLastGamemode().name()); } else { @@ -589,7 +579,7 @@ public abstract class SQLDB extends Database { statement.execute(); statement.close(); userId = getUserId(uuid.toString()); - } + } saveLocationList(userId, data.getLocations()); saveNickList(userId, data.getNicknames()); saveIPList(userId, data.getIps()); diff --git a/Plan Advanced/src/com/djrapitops/plan/datahandlers/ActivityHandler.java b/Plan Advanced/src/com/djrapitops/plan/datahandlers/ActivityHandler.java index 5d22912b6..99f080aa5 100644 --- a/Plan Advanced/src/com/djrapitops/plan/datahandlers/ActivityHandler.java +++ b/Plan Advanced/src/com/djrapitops/plan/datahandlers/ActivityHandler.java @@ -5,7 +5,7 @@ import com.djrapitops.plan.database.UserData; import java.util.Date; import java.util.UUID; import org.bukkit.entity.Player; -import org.bukkit.event.player.PlayerLoginEvent; +import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; public class ActivityHandler { @@ -28,21 +28,24 @@ public class ActivityHandler { data.setLastPlayed(timeNow); } - public void handleLogIn(PlayerLoginEvent event, UserData data) { + public void handleLogIn(PlayerJoinEvent event, UserData data) { data.setLastPlayed(new Date().getTime()); Player player = event.getPlayer(); data.updateBanned(player); + data.setLoginTimes(data.getLoginTimes()+1); handler.getLocationHandler().addLocation(player.getUniqueId(), player.getLocation()); } public void handleLogOut(PlayerQuitEvent event, UserData data) { Player player = event.getPlayer(); - data.setPlayTime(data.getPlayTime() + (new Date().getTime() - data.getLastPlayed())); - data.setLastPlayed(player.getLastPlayed()); + long now = new Date().getTime(); + data.setPlayTime(data.getPlayTime() + (now - data.getLastPlayed())); + data.setLastPlayed(now); } void handleReload(Player player, UserData data) { - data.setPlayTime(data.getPlayTime() + (new Date().getTime() - data.getLastPlayed())); - data.setLastPlayed(player.getLastPlayed()); + long now = new Date().getTime(); + data.setPlayTime(data.getPlayTime() + (now - data.getLastPlayed())); + data.setLastPlayed(now); } } diff --git a/Plan Advanced/src/com/djrapitops/plan/datahandlers/BasicInfoHandler.java b/Plan Advanced/src/com/djrapitops/plan/datahandlers/BasicInfoHandler.java index 80cc12e3c..e4f2d4831 100644 --- a/Plan Advanced/src/com/djrapitops/plan/datahandlers/BasicInfoHandler.java +++ b/Plan Advanced/src/com/djrapitops/plan/datahandlers/BasicInfoHandler.java @@ -2,11 +2,8 @@ package com.djrapitops.plan.datahandlers; import com.djrapitops.plan.Plan; import com.djrapitops.plan.database.UserData; -import java.util.Date; -import java.util.UUID; import org.bukkit.entity.Player; -import org.bukkit.event.player.PlayerLoginEvent; -import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.event.player.PlayerJoinEvent; public class BasicInfoHandler { @@ -16,14 +13,10 @@ public class BasicInfoHandler { this.handler = h; } - public void save(Player player) { - - } - - public void handleLogIn(PlayerLoginEvent event, UserData data) { + public void handleLogIn(PlayerJoinEvent event, UserData data) { Player player = event.getPlayer(); data.addNickname(player.getDisplayName()); - data.addIpAddress(event.getAddress()); + data.addIpAddress(player.getAddress().getAddress()); } void handleReload(Player player, UserData data) { diff --git a/Plan Advanced/src/com/djrapitops/plan/datahandlers/DataHandler.java b/Plan Advanced/src/com/djrapitops/plan/datahandlers/DataHandler.java index f086853f3..2f80737d6 100644 --- a/Plan Advanced/src/com/djrapitops/plan/datahandlers/DataHandler.java +++ b/Plan Advanced/src/com/djrapitops/plan/datahandlers/DataHandler.java @@ -8,11 +8,8 @@ import com.djrapitops.plan.database.ServerData; import java.util.HashMap; import java.util.UUID; import org.bukkit.Bukkit; -import static org.bukkit.Bukkit.getOfflinePlayer; import org.bukkit.GameMode; -import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; -import org.bukkit.event.player.PlayerLoginEvent; public class DataHandler { @@ -28,6 +25,7 @@ public class DataHandler { private final ServerDataHandler serverDataHandler; private final PlanLiteHandler planLiteHandler; private final Database db; + private final NewPlayerCreator newPlayerCreator; private int timesSaved; @@ -44,6 +42,7 @@ public class DataHandler { serverData = db.getNewestServerData(); serverDataHandler = new ServerDataHandler(serverData); planLiteHandler = new PlanLiteHandler(plugin); + newPlayerCreator = new NewPlayerCreator(plugin, this); timesSaved = 0; @@ -136,19 +135,7 @@ public class DataHandler { } public void newPlayer(Player player) { - UserData data = new UserData(player, new DemographicsData(), db); - saveCachedData(player.getUniqueId()); - GameMode defaultGM = Bukkit.getServer().getDefaultGameMode(); - if (defaultGM != null) { - data.setLastGamemode(defaultGM); - } else { - data.setLastGamemode(GameMode.SURVIVAL); - } - data.setPlayTime(Long.parseLong("0")); - data.setTimesKicked(0); - data.setLoginTimes(1); - data.setLastGmSwapTime(Long.parseLong("0")); - dataCache.put(player.getUniqueId(), data); + newPlayerCreator.createNewPlayer(player); } public HashMap getDataCache() { @@ -184,6 +171,7 @@ public class DataHandler { } public ServerData getServerData() { + serverData.updatePlayerCount(); return serverData; } diff --git a/Plan Advanced/src/com/djrapitops/plan/datahandlers/DemographicsHandler.java b/Plan Advanced/src/com/djrapitops/plan/datahandlers/DemographicsHandler.java index 0385c223e..078e14ef7 100644 --- a/Plan Advanced/src/com/djrapitops/plan/datahandlers/DemographicsHandler.java +++ b/Plan Advanced/src/com/djrapitops/plan/datahandlers/DemographicsHandler.java @@ -12,7 +12,7 @@ import java.util.Scanner; import java.util.Set; import org.bukkit.entity.Player; import org.bukkit.event.player.AsyncPlayerChatEvent; -import org.bukkit.event.player.PlayerLoginEvent; +import org.bukkit.event.player.PlayerJoinEvent; import static org.bukkit.plugin.java.JavaPlugin.getPlugin; public class DemographicsHandler { @@ -100,8 +100,8 @@ public class DemographicsHandler { } } - public void handleLogIn(PlayerLoginEvent event, UserData data) { - InetAddress address = event.getAddress(); + public void handleLogIn(PlayerJoinEvent event, UserData data) { + InetAddress address = event.getPlayer().getAddress().getAddress(); try { Scanner locationScanner = new Scanner("http://ip-api.com/line/" + address.getHostAddress()); List results = new ArrayList<>(); diff --git a/Plan Advanced/src/com/djrapitops/plan/datahandlers/GamemodeTimesHandler.java b/Plan Advanced/src/com/djrapitops/plan/datahandlers/GamemodeTimesHandler.java index 352de4901..bb3dff16b 100644 --- a/Plan Advanced/src/com/djrapitops/plan/datahandlers/GamemodeTimesHandler.java +++ b/Plan Advanced/src/com/djrapitops/plan/datahandlers/GamemodeTimesHandler.java @@ -6,7 +6,7 @@ import java.util.HashMap; import org.bukkit.GameMode; import org.bukkit.entity.Player; import org.bukkit.event.player.PlayerGameModeChangeEvent; -import org.bukkit.event.player.PlayerLoginEvent; +import org.bukkit.event.player.PlayerJoinEvent; public class GamemodeTimesHandler { @@ -18,7 +18,7 @@ public class GamemodeTimesHandler { handler = h; } - public void handleLogin(PlayerLoginEvent event, UserData data) { + public void handleLogin(PlayerJoinEvent event, UserData data) { data.setLastGamemode(event.getPlayer().getGameMode()); } @@ -27,14 +27,14 @@ public class GamemodeTimesHandler { handler.getActivityHandler().saveToCache(event.getPlayer(), data); long lastSwap = data.getLastGmSwapTime(); - long now = data.getPlayTime(); + long playTime = data.getPlayTime(); GameMode oldGM = data.getLastGamemode(); - data.setGMTime(oldGM, times.get(oldGM) + (now - lastSwap)); + data.setGMTime(oldGM, times.get(oldGM) + (playTime - lastSwap)); GameMode newGM = event.getNewGameMode(); data.setLastGamemode(newGM); - data.setLastGmSwapTime(now); + data.setLastGmSwapTime(playTime); } void saveToCache(Player p, UserData data) { @@ -42,11 +42,11 @@ public class GamemodeTimesHandler { handler.getActivityHandler().saveToCache(p, data); long lastSwap = data.getLastGmSwapTime(); - long now = data.getPlayTime(); + long playtime = data.getPlayTime(); GameMode currentGM = p.getGameMode(); - data.setGMTime(currentGM, times.get(currentGM) + (now - lastSwap)); + data.setGMTime(currentGM, times.get(currentGM) + (playtime - lastSwap)); - data.setLastGmSwapTime(now); + data.setLastGmSwapTime(playtime); } void handleReload(Player p, UserData data) { @@ -54,11 +54,11 @@ public class GamemodeTimesHandler { handler.getActivityHandler().saveToCache(p, data); long lastSwap = data.getLastGmSwapTime(); - long now = data.getPlayTime(); + long playTime = data.getPlayTime(); GameMode currentGM = p.getGameMode(); - data.setGMTime(currentGM, times.get(currentGM) + (now - lastSwap)); + data.setGMTime(currentGM, times.get(currentGM) + (playTime - lastSwap)); - data.setLastGmSwapTime(now); + data.setLastGmSwapTime(playTime); } } diff --git a/Plan Advanced/src/com/djrapitops/plan/datahandlers/NewPlayerCreator.java b/Plan Advanced/src/com/djrapitops/plan/datahandlers/NewPlayerCreator.java new file mode 100644 index 000000000..fa9001c93 --- /dev/null +++ b/Plan Advanced/src/com/djrapitops/plan/datahandlers/NewPlayerCreator.java @@ -0,0 +1,43 @@ +package com.djrapitops.plan.datahandlers; + +import com.djrapitops.plan.Plan; +import com.djrapitops.plan.database.Database; +import com.djrapitops.plan.database.DemographicsData; +import com.djrapitops.plan.database.UserData; +import org.bukkit.Bukkit; +import org.bukkit.GameMode; +import org.bukkit.entity.Player; + +public class NewPlayerCreator { + + private Plan plugin; + private Database db; + private DataHandler handler; + + public NewPlayerCreator(Plan plugin, DataHandler h) { + this.plugin = plugin; + db = plugin.getDB(); + handler = h; + } + + public void createNewPlayer(Player p) { + UserData data = new UserData(p, new DemographicsData(), db); + if (p.getGameMode() == null) { + GameMode defaultGM = Bukkit.getServer().getDefaultGameMode(); + if (defaultGM != null) { + data.setLastGamemode(defaultGM); + } else { + data.setLastGamemode(GameMode.SURVIVAL); + } + } else { + data.setLastGamemode(p.getGameMode()); + } + long zero = Long.parseLong("0"); + data.setPlayTime(zero); + data.setTimesKicked(0); + data.setLoginTimes(1); + data.setLastGmSwapTime(zero); + db.saveUserData(p.getUniqueId(), data); + } + +} diff --git a/Plan Advanced/src/com/djrapitops/plan/datahandlers/listeners/PlanPlayerListener.java b/Plan Advanced/src/com/djrapitops/plan/datahandlers/listeners/PlanPlayerListener.java index bad7d6233..609f9d7da 100644 --- a/Plan Advanced/src/com/djrapitops/plan/datahandlers/listeners/PlanPlayerListener.java +++ b/Plan Advanced/src/com/djrapitops/plan/datahandlers/listeners/PlanPlayerListener.java @@ -15,8 +15,8 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerKickEvent; -import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.event.player.PlayerLoginEvent.Result; import org.bukkit.event.player.PlayerQuitEvent; @@ -43,15 +43,14 @@ public class PlanPlayerListener implements Listener { } @EventHandler(priority = EventPriority.MONITOR) - public void onPlayerLogin(PlayerLoginEvent event) { - if (!event.getResult().equals(Result.ALLOWED)) { - return; - } + public void onPlayerLogin(PlayerJoinEvent event) { Player player = event.getPlayer(); UUID uuid = player.getUniqueId(); - boolean newPlayer = activityH.isFirstTimeJoin(uuid); - handler.newPlayer(player); - serverHandler.handleLogin(newPlayer); + boolean isNewPlayer = activityH.isFirstTimeJoin(uuid); + if (isNewPlayer) { + handler.newPlayer(player); + } + serverHandler.handleLogin(isNewPlayer); UserData data = handler.getCurrentData(uuid); activityH.handleLogIn(event, data); basicInfoH.handleLogIn(event, data); diff --git a/Plan Lite/src/com/djrapitops/plan/PlanLite.java b/Plan Lite/src/com/djrapitops/plan/PlanLite.java index 6c39f092e..ef2730dba 100644 --- a/Plan Lite/src/com/djrapitops/plan/PlanLite.java +++ b/Plan Lite/src/com/djrapitops/plan/PlanLite.java @@ -7,7 +7,6 @@ import com.djrapitops.plan.command.hooks.OnTimeHook; import com.djrapitops.plan.api.Hook; import com.djrapitops.plan.command.hooks.PlaceholderAPIHook; import com.djrapitops.plan.command.hooks.SuperbVoteHook; -//import com.djrapitops.plan.command.hooks.McMMOHook; import com.djrapitops.plan.command.hooks.TownyHook; import com.djrapitops.plan.command.hooks.VaultHook; import com.djrapitops.plan.command.hooks.AdvancedAchievementsHook; @@ -169,6 +168,11 @@ public class PlanLite extends JavaPlugin { return api; } + /** + * + * @param name + * @param hook + */ public void addExtraHook(String name, Hook hook) { try { this.extraHooks.put(name, hook);