mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2025-03-10 22:01:00 +01:00
Fixed User not saving to plan_user_info on BungeeCord setups when user has joined one server and joins another, Leading to players not appearing on playerlist of the second server #351
This commit is contained in:
parent
54a9551a9c
commit
0864cbae84
@ -27,6 +27,7 @@ public class UserInfo {
|
||||
this.registered = registered;
|
||||
this.opped = opped;
|
||||
this.banned = banned;
|
||||
lastSeen = 0L;
|
||||
}
|
||||
|
||||
public UUID getUuid() {
|
||||
|
@ -49,12 +49,12 @@ public class RegisterProcessor extends PlayerProcessor {
|
||||
if (!usersTable.isRegistered(uuid)) {
|
||||
usersTable.registerUser(uuid, registered, name);
|
||||
}
|
||||
if (db.getActionsTable().getActions(uuid).size() > 0) {
|
||||
return;
|
||||
}
|
||||
if (!userInfoTable.isRegistered(uuid)) {
|
||||
userInfoTable.registerUserInfo(uuid, registered);
|
||||
}
|
||||
if (db.getActionsTable().getActions(uuid).size() > 0) {
|
||||
return;
|
||||
}
|
||||
plugin.getDataCache().markFirstSession(uuid);
|
||||
db.getActionsTable().insertAction(uuid, new Action(time, Actions.FIRST_SESSION, "Online: " + playersOnline + " Players"));
|
||||
} catch (SQLException e) {
|
||||
|
@ -261,17 +261,12 @@ public class Analysis {
|
||||
}
|
||||
}
|
||||
|
||||
Map<UUID, UserInfo> mappedUserInfo = new HashMap<>();
|
||||
userInfo.forEach(u -> mappedUserInfo.put(u.getUuid(), u));
|
||||
|
||||
Map<UUID, Long> lastSeen = db.getSessionsTable().getLastSeenForAllPlayers();
|
||||
for (Map.Entry<UUID, Long> entry : lastSeen.entrySet()) {
|
||||
UserInfo user = mappedUserInfo.get(entry.getKey());
|
||||
if (user == null) {
|
||||
continue;
|
||||
}
|
||||
user.setLastSeen(entry.getValue());
|
||||
for (UserInfo info : userInfo) {
|
||||
Long userLastSeen = lastSeen.getOrDefault(info.getUuid(), 0L);
|
||||
info.setLastSeen(userLastSeen);
|
||||
}
|
||||
|
||||
userInfo.sort(new UserInfoLastPlayedComparator());
|
||||
|
||||
activity.setRecentPlayersUUIDs(userInfo.stream().map(UserInfo::getUuid).collect(Collectors.toList()));
|
||||
@ -279,7 +274,7 @@ public class Analysis {
|
||||
|
||||
playerCount.addPlayers(userInfo.stream().map(UserInfo::getUuid).collect(Collectors.toSet()));
|
||||
|
||||
Map<UUID, Long> registered = mappedUserInfo.entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey, entry -> entry.getValue().getRegistered()));
|
||||
Map<UUID, Long> registered = userInfo.stream().collect(Collectors.toMap(UserInfo::getUuid, UserInfo::getRegistered));
|
||||
joinInfo.addRegistered(registered);
|
||||
activity.addBans(userInfo.stream().filter(UserInfo::isBanned).map(UserInfo::getUuid).collect(Collectors.toSet()));
|
||||
|
||||
|
@ -437,6 +437,11 @@ public class DatabaseTest {
|
||||
assertNull(sessions.get(worlds.get(1)));
|
||||
|
||||
assertEquals(session, savedSessions.get(0));
|
||||
|
||||
Map<UUID, Long> lastSeen = sessionsTable.getLastSeenForAllPlayers();
|
||||
assertTrue(lastSeen.containsKey(uuid));
|
||||
assertFalse(lastSeen.containsKey(uuid2));
|
||||
assertEquals(22345L, (long) lastSeen.get(uuid));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -67,9 +67,10 @@ public class ComparatorTest {
|
||||
longValues.sort(Long::compare);
|
||||
|
||||
Collections.reverse(longValues);
|
||||
System.out.println(longValues);
|
||||
userInfo.sort(new UserInfoLastPlayedComparator());
|
||||
List<Long> afterSort = userInfo.stream().map(UserInfo::getLastSeen).collect(Collectors.toList());
|
||||
|
||||
System.out.println(afterSort);
|
||||
assertEquals(longValues, afterSort);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user