mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2025-02-22 07:12:09 +01:00
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
This commit is contained in:
parent
6ae61230df
commit
7758c5c581
@ -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<String> 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;
|
||||
}
|
||||
|
@ -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<Location> 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<String> 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<InetAddress> 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<GameMode, Long> 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<Location> 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<String> 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<InetAddress> 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<GameMode, Long> 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());
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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) {
|
||||
|
@ -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<UUID, UserData> getDataCache() {
|
||||
@ -184,6 +171,7 @@ public class DataHandler {
|
||||
}
|
||||
|
||||
public ServerData getServerData() {
|
||||
serverData.updatePlayerCount();
|
||||
return serverData;
|
||||
}
|
||||
|
||||
|
@ -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<String> results = new ArrayList<>();
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
@ -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);
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user