Search in sources :

Example 1 with PlayerJoinEvent

use of cn.nukkit.event.player.PlayerJoinEvent in project Plan by plan-player-analytics.

the class PlayerOnlineListener method actOnJoinEvent.

private void actOnJoinEvent(PlayerJoinEvent event) {
    Player player = event.getPlayer();
    UUID playerUUID = player.getUniqueId();
    ServerUUID serverUUID = serverInfo.getServerUUID();
    long time = System.currentTimeMillis();
    NukkitAFKListener.afkTracker.performedAction(playerUUID, time);
    String world = player.getLevel().getName();
    String gm = GMTimes.magicNumberToGMName(player.getGamemode());
    Database database = dbSystem.getDatabase();
    database.executeTransaction(new WorldNameStoreTransaction(serverUUID, world));
    InetAddress address = player.getSocketAddress().getAddress();
    Supplier<String> getHostName = () -> null;
    String playerName = player.getName();
    String displayName = player.getDisplayName();
    boolean gatheringGeolocations = config.isTrue(DataGatheringSettings.GEOLOCATIONS);
    if (gatheringGeolocations) {
        database.executeTransaction(new GeoInfoStoreTransaction(playerUUID, address, time, geolocationCache::getCountry));
    }
    long registerDate = TimeUnit.SECONDS.toMillis(player.getFirstPlayed());
    database.executeTransaction(new PlayerServerRegisterTransaction(playerUUID, () -> registerDate, playerName, serverUUID, getHostName));
    dbSystem.getDatabase().executeTransaction(new OperatorStatusTransaction(playerUUID, serverUUID, player.isOp()));
    ActiveSession session = new ActiveSession(playerUUID, serverUUID, time, world, gm);
    session.getExtraData().put(PlayerName.class, new PlayerName(playerName));
    session.getExtraData().put(ServerName.class, new ServerName(serverInfo.getServer().getIdentifiableName()));
    sessionCache.cacheSession(playerUUID, session).ifPresent(previousSession -> database.executeTransaction(new SessionEndTransaction(previousSession)));
    database.executeTransaction(new NicknameStoreTransaction(playerUUID, new Nickname(displayName, time, serverUUID), (uuid, name) -> nicknameCache.getDisplayName(playerUUID).map(name::equals).orElse(false)));
    processing.submitNonCritical(() -> extensionService.updatePlayerValues(playerUUID, playerName, CallEvents.PLAYER_JOIN));
    if (config.isTrue(ExportSettings.EXPORT_ON_ONLINE_STATUS_CHANGE)) {
        processing.submitNonCritical(() -> exporter.exportPlayerPage(playerUUID, playerName));
    }
}
Also used : PlayerLoginEvent(cn.nukkit.event.player.PlayerLoginEvent) PlanConfig(com.djrapitops.plan.settings.config.PlanConfig) NicknameCache(com.djrapitops.plan.gathering.cache.NicknameCache) Exporter(com.djrapitops.plan.delivery.export.Exporter) PlayerName(com.djrapitops.plan.delivery.domain.PlayerName) ServerUUID(com.djrapitops.plan.identification.ServerUUID) DataGatheringSettings(com.djrapitops.plan.settings.config.paths.DataGatheringSettings) Supplier(java.util.function.Supplier) Database(com.djrapitops.plan.storage.database.Database) DBSystem(com.djrapitops.plan.storage.database.DBSystem) Inject(javax.inject.Inject) InetAddress(java.net.InetAddress) GMTimes(com.djrapitops.plan.gathering.domain.GMTimes) PlayerJoinEvent(cn.nukkit.event.player.PlayerJoinEvent) ExtensionSvc(com.djrapitops.plan.extension.ExtensionSvc) SessionCache(com.djrapitops.plan.gathering.cache.SessionCache) ActiveSession(com.djrapitops.plan.gathering.domain.ActiveSession) EventPriority(cn.nukkit.event.EventPriority) ErrorContext(com.djrapitops.plan.utilities.logging.ErrorContext) PlayerKickEvent(cn.nukkit.event.player.PlayerKickEvent) ServerName(com.djrapitops.plan.delivery.domain.ServerName) ServerInfo(com.djrapitops.plan.identification.ServerInfo) ExportSettings(com.djrapitops.plan.settings.config.paths.ExportSettings) UUID(java.util.UUID) EventHandler(cn.nukkit.event.EventHandler) Listener(cn.nukkit.event.Listener) TimeUnit(java.util.concurrent.TimeUnit) Status(com.djrapitops.plan.gathering.listeners.Status) ErrorLogger(com.djrapitops.plan.utilities.logging.ErrorLogger) com.djrapitops.plan.storage.database.transactions.events(com.djrapitops.plan.storage.database.transactions.events) Player(cn.nukkit.Player) PlayerQuitEvent(cn.nukkit.event.player.PlayerQuitEvent) CallEvents(com.djrapitops.plan.extension.CallEvents) Processing(com.djrapitops.plan.processing.Processing) GeolocationCache(com.djrapitops.plan.gathering.geolocation.GeolocationCache) Nickname(com.djrapitops.plan.delivery.domain.Nickname) Player(cn.nukkit.Player) ServerUUID(com.djrapitops.plan.identification.ServerUUID) ActiveSession(com.djrapitops.plan.gathering.domain.ActiveSession) PlayerName(com.djrapitops.plan.delivery.domain.PlayerName) ServerName(com.djrapitops.plan.delivery.domain.ServerName) Database(com.djrapitops.plan.storage.database.Database) ServerUUID(com.djrapitops.plan.identification.ServerUUID) UUID(java.util.UUID) InetAddress(java.net.InetAddress) Nickname(com.djrapitops.plan.delivery.domain.Nickname)

Aggregations

Player (cn.nukkit.Player)1 EventHandler (cn.nukkit.event.EventHandler)1 EventPriority (cn.nukkit.event.EventPriority)1 Listener (cn.nukkit.event.Listener)1 PlayerJoinEvent (cn.nukkit.event.player.PlayerJoinEvent)1 PlayerKickEvent (cn.nukkit.event.player.PlayerKickEvent)1 PlayerLoginEvent (cn.nukkit.event.player.PlayerLoginEvent)1 PlayerQuitEvent (cn.nukkit.event.player.PlayerQuitEvent)1 Nickname (com.djrapitops.plan.delivery.domain.Nickname)1 PlayerName (com.djrapitops.plan.delivery.domain.PlayerName)1 ServerName (com.djrapitops.plan.delivery.domain.ServerName)1 Exporter (com.djrapitops.plan.delivery.export.Exporter)1 CallEvents (com.djrapitops.plan.extension.CallEvents)1 ExtensionSvc (com.djrapitops.plan.extension.ExtensionSvc)1 NicknameCache (com.djrapitops.plan.gathering.cache.NicknameCache)1 SessionCache (com.djrapitops.plan.gathering.cache.SessionCache)1 ActiveSession (com.djrapitops.plan.gathering.domain.ActiveSession)1 GMTimes (com.djrapitops.plan.gathering.domain.GMTimes)1 GeolocationCache (com.djrapitops.plan.gathering.geolocation.GeolocationCache)1 Status (com.djrapitops.plan.gathering.listeners.Status)1