diff --git a/Plan/bukkit/src/main/java/com/djrapitops/plan/system/listeners/bukkit/PlayerOnlineListener.java b/Plan/bukkit/src/main/java/com/djrapitops/plan/system/listeners/bukkit/PlayerOnlineListener.java index a9cbdb2d3..2bf4be91f 100644 --- a/Plan/bukkit/src/main/java/com/djrapitops/plan/system/listeners/bukkit/PlayerOnlineListener.java +++ b/Plan/bukkit/src/main/java/com/djrapitops/plan/system/listeners/bukkit/PlayerOnlineListener.java @@ -20,6 +20,7 @@ import com.djrapitops.plan.data.container.Session; import com.djrapitops.plan.data.store.objects.Nickname; import com.djrapitops.plan.db.Database; import com.djrapitops.plan.db.access.transactions.events.*; +import com.djrapitops.plan.extension.ExtensionServiceImplementation; import com.djrapitops.plan.system.cache.GeolocationCache; import com.djrapitops.plan.system.cache.NicknameCache; import com.djrapitops.plan.system.cache.SessionCache; @@ -57,6 +58,7 @@ public class PlayerOnlineListener implements Listener { private final Processing processing; private final ServerInfo serverInfo; private final DBSystem dbSystem; + private final ExtensionServiceImplementation extensionService; private final GeolocationCache geolocationCache; private final NicknameCache nicknameCache; private final SessionCache sessionCache; @@ -70,6 +72,7 @@ public class PlayerOnlineListener implements Listener { Processing processing, ServerInfo serverInfo, DBSystem dbSystem, + ExtensionServiceImplementation extensionService, GeolocationCache geolocationCache, NicknameCache nicknameCache, SessionCache sessionCache, @@ -81,6 +84,7 @@ public class PlayerOnlineListener implements Listener { this.processing = processing; this.serverInfo = serverInfo; this.dbSystem = dbSystem; + this.extensionService = extensionService; this.geolocationCache = geolocationCache; this.nicknameCache = nicknameCache; this.sessionCache = sessionCache; @@ -139,11 +143,11 @@ public class PlayerOnlineListener implements Listener { private void actOnJoinEvent(PlayerJoinEvent event) { Player player = event.getPlayer(); - UUID uuid = player.getUniqueId(); + UUID playerUUID = player.getUniqueId(); UUID serverUUID = serverInfo.getServerUUID(); long time = System.currentTimeMillis(); - AFKListener.AFK_TRACKER.performedAction(uuid, time); + AFKListener.AFK_TRACKER.performedAction(playerUUID, time); String world = player.getWorld().getName(); String gm = player.getGameMode().name(); @@ -159,20 +163,21 @@ public class PlayerOnlineListener implements Listener { boolean gatheringGeolocations = config.isTrue(DataGatheringSettings.GEOLOCATIONS); if (gatheringGeolocations) { database.executeTransaction( - new GeoInfoStoreTransaction(uuid, address, time, geolocationCache::getCountry) + new GeoInfoStoreTransaction(playerUUID, address, time, geolocationCache::getCountry) ); } - database.executeTransaction(new PlayerServerRegisterTransaction(uuid, player::getFirstPlayed, playerName, serverUUID)); - sessionCache.cacheSession(uuid, new Session(uuid, serverUUID, time, world, gm)) + database.executeTransaction(new PlayerServerRegisterTransaction(playerUUID, player::getFirstPlayed, playerName, serverUUID)); + sessionCache.cacheSession(playerUUID, new Session(playerUUID, serverUUID, time, world, gm)) .ifPresent(previousSession -> database.executeTransaction(new SessionEndTransaction(previousSession))); database.executeTransaction(new NicknameStoreTransaction( - uuid, new Nickname(displayName, time, serverUUID), - (playerUUID, name) -> name.equals(nicknameCache.getDisplayName(playerUUID)) + playerUUID, new Nickname(displayName, time, serverUUID), + (uuid, name) -> name.equals(nicknameCache.getDisplayName(uuid)) )); - processing.submitNonCritical(processors.info().playerPageUpdateProcessor(uuid)); + processing.submitNonCritical(processors.info().playerPageUpdateProcessor(playerUUID)); + processing.submitNonCritical(() -> extensionService.updatePlayerValues(playerUUID, playerName)); } diff --git a/Plan/bungeecord/src/main/java/com/djrapitops/plan/system/listeners/bungee/PlayerOnlineListener.java b/Plan/bungeecord/src/main/java/com/djrapitops/plan/system/listeners/bungee/PlayerOnlineListener.java index 55a2c6feb..b1123c234 100644 --- a/Plan/bungeecord/src/main/java/com/djrapitops/plan/system/listeners/bungee/PlayerOnlineListener.java +++ b/Plan/bungeecord/src/main/java/com/djrapitops/plan/system/listeners/bungee/PlayerOnlineListener.java @@ -20,6 +20,7 @@ import com.djrapitops.plan.data.container.Session; import com.djrapitops.plan.db.Database; import com.djrapitops.plan.db.access.transactions.events.GeoInfoStoreTransaction; import com.djrapitops.plan.db.access.transactions.events.PlayerRegisterTransaction; +import com.djrapitops.plan.extension.ExtensionServiceImplementation; import com.djrapitops.plan.system.cache.GeolocationCache; import com.djrapitops.plan.system.cache.SessionCache; import com.djrapitops.plan.system.database.DBSystem; @@ -54,6 +55,7 @@ public class PlayerOnlineListener implements Listener { private final Processors processors; private final Processing processing; private final DBSystem dbSystem; + private final ExtensionServiceImplementation extensionService; private final GeolocationCache geolocationCache; private final SessionCache sessionCache; private final ServerInfo serverInfo; @@ -65,6 +67,7 @@ public class PlayerOnlineListener implements Listener { Processors processors, Processing processing, DBSystem dbSystem, + ExtensionServiceImplementation extensionService, GeolocationCache geolocationCache, SessionCache sessionCache, ServerInfo serverInfo, @@ -74,6 +77,7 @@ public class PlayerOnlineListener implements Listener { this.processors = processors; this.processing = processing; this.dbSystem = dbSystem; + this.extensionService = extensionService; this.geolocationCache = geolocationCache; this.sessionCache = sessionCache; this.serverInfo = serverInfo; @@ -85,7 +89,7 @@ public class PlayerOnlineListener implements Listener { try { ProxiedPlayer player = event.getPlayer(); UUID playerUUID = player.getUniqueId(); - String name = player.getName(); + String playerName = player.getName(); InetAddress address = player.getAddress().getAddress(); long time = System.currentTimeMillis(); @@ -99,8 +103,9 @@ public class PlayerOnlineListener implements Listener { ); } - database.executeTransaction(new PlayerRegisterTransaction(playerUUID, () -> time, name)); + database.executeTransaction(new PlayerRegisterTransaction(playerUUID, () -> time, playerName)); processing.submit(processors.info().playerPageUpdateProcessor(playerUUID)); + processing.submitNonCritical(() -> extensionService.updatePlayerValues(playerUUID, playerName)); ResponseCache.clearResponse(PageId.SERVER.of(serverInfo.getServerUUID())); } catch (Exception e) { errorHandler.log(L.WARN, this.getClass(), e); diff --git a/Plan/common/build.gradle b/Plan/common/build.gradle index 0c1bc9a8b..766f71514 100644 --- a/Plan/common/build.gradle +++ b/Plan/common/build.gradle @@ -1,6 +1,6 @@ dependencies { compile "com.djrapitops:AbstractPluginFramework-api:$abstractPluginFrameworkVersion" - compile project(path: ":api") + compile project(path: ":api", configuration: 'shadow') compile project(path: ":extensions", configuration: 'shadow') compile "com.djrapitops:PlanPluginBridge:$planPluginBridgeVersion" compile "org.apache.httpcomponents:httpclient:$httpClientVersion" diff --git a/Plan/extensions/src/main/java/com/djrapitops/plan/extension/implementation/ExtensionRegister.java b/Plan/extensions/src/main/java/com/djrapitops/plan/extension/implementation/ExtensionRegister.java index 8bfee07f1..6f2bcc91b 100644 --- a/Plan/extensions/src/main/java/com/djrapitops/plan/extension/implementation/ExtensionRegister.java +++ b/Plan/extensions/src/main/java/com/djrapitops/plan/extension/implementation/ExtensionRegister.java @@ -1,3 +1,19 @@ +/* + * This file is part of Player Analytics (Plan). + * + * Plan is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License v3 as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Plan is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Plan. If not, see . + */ package com.djrapitops.plan.extension.implementation; import com.djrapitops.extension.AdvancedAchievementsExtensionFactory; diff --git a/Plan/sponge/src/main/java/com/djrapitops/plan/system/listeners/SpongeListenerSystem.java b/Plan/sponge/src/main/java/com/djrapitops/plan/system/listeners/SpongeListenerSystem.java index 173eddf22..b44bd95ed 100644 --- a/Plan/sponge/src/main/java/com/djrapitops/plan/system/listeners/SpongeListenerSystem.java +++ b/Plan/sponge/src/main/java/com/djrapitops/plan/system/listeners/SpongeListenerSystem.java @@ -35,7 +35,7 @@ public class SpongeListenerSystem extends ListenerSystem { private final SpongeCommandListener commandListener; private final SpongeDeathListener deathListener; private final SpongeGMChangeListener gmChangeListener; - private final SpongePlayerListener playerListener; + private final PlayerOnlineListener playerListener; private final SpongeWorldChangeListener worldChangeListener; private final SpongeServerShutdownSave spongeServerShutdownSave; @@ -47,7 +47,7 @@ public class SpongeListenerSystem extends ListenerSystem { SpongeCommandListener commandListener, SpongeDeathListener deathListener, SpongeGMChangeListener gmChangeListener, - SpongePlayerListener playerListener, + PlayerOnlineListener playerListener, SpongeWorldChangeListener worldChangeListener, SpongeServerShutdownSave spongeServerShutdownSave ) { diff --git a/Plan/sponge/src/main/java/com/djrapitops/plan/system/listeners/sponge/SpongePlayerListener.java b/Plan/sponge/src/main/java/com/djrapitops/plan/system/listeners/sponge/PlayerOnlineListener.java similarity index 88% rename from Plan/sponge/src/main/java/com/djrapitops/plan/system/listeners/sponge/SpongePlayerListener.java rename to Plan/sponge/src/main/java/com/djrapitops/plan/system/listeners/sponge/PlayerOnlineListener.java index 01546d0dc..309d56162 100644 --- a/Plan/sponge/src/main/java/com/djrapitops/plan/system/listeners/sponge/SpongePlayerListener.java +++ b/Plan/sponge/src/main/java/com/djrapitops/plan/system/listeners/sponge/PlayerOnlineListener.java @@ -20,6 +20,7 @@ import com.djrapitops.plan.data.container.Session; import com.djrapitops.plan.data.store.objects.Nickname; import com.djrapitops.plan.db.Database; import com.djrapitops.plan.db.access.transactions.events.*; +import com.djrapitops.plan.extension.ExtensionServiceImplementation; import com.djrapitops.plan.system.cache.GeolocationCache; import com.djrapitops.plan.system.cache.NicknameCache; import com.djrapitops.plan.system.cache.SessionCache; @@ -54,13 +55,14 @@ import java.util.UUID; * * @author Rsl1122 */ -public class SpongePlayerListener { +public class PlayerOnlineListener { private final PlanConfig config; private final Processors processors; private final Processing processing; private final ServerInfo serverInfo; private final DBSystem dbSystem; + private final ExtensionServiceImplementation extensionService; private final GeolocationCache geolocationCache; private final NicknameCache nicknameCache; private final SessionCache sessionCache; @@ -68,12 +70,13 @@ public class SpongePlayerListener { private final ErrorHandler errorHandler; @Inject - public SpongePlayerListener( + public PlayerOnlineListener( PlanConfig config, Processors processors, Processing processing, ServerInfo serverInfo, DBSystem dbSystem, + ExtensionServiceImplementation extensionService, GeolocationCache geolocationCache, NicknameCache nicknameCache, SessionCache sessionCache, @@ -85,6 +88,7 @@ public class SpongePlayerListener { this.processing = processing; this.serverInfo = serverInfo; this.dbSystem = dbSystem; + this.extensionService = extensionService; this.geolocationCache = geolocationCache; this.nicknameCache = nicknameCache; this.sessionCache = sessionCache; @@ -142,11 +146,11 @@ public class SpongePlayerListener { private void actOnJoinEvent(ClientConnectionEvent.Join event) { Player player = event.getTargetEntity(); - UUID uuid = player.getUniqueId(); + UUID playerUUID = player.getUniqueId(); UUID serverUUID = serverInfo.getServerUUID(); long time = System.currentTimeMillis(); - SpongeAFKListener.AFK_TRACKER.performedAction(uuid, time); + SpongeAFKListener.AFK_TRACKER.performedAction(playerUUID, time); String world = player.getWorld().getName(); Optional gameMode = player.getGameModeData().get(Keys.GAME_MODE); @@ -163,20 +167,21 @@ public class SpongePlayerListener { boolean gatheringGeolocations = config.isTrue(DataGatheringSettings.GEOLOCATIONS); if (gatheringGeolocations) { database.executeTransaction( - new GeoInfoStoreTransaction(uuid, address, time, geolocationCache::getCountry) + new GeoInfoStoreTransaction(playerUUID, address, time, geolocationCache::getCountry) ); } - database.executeTransaction(new PlayerServerRegisterTransaction(uuid, () -> time, playerName, serverUUID)); - sessionCache.cacheSession(uuid, new Session(uuid, serverUUID, time, world, gm)) + database.executeTransaction(new PlayerServerRegisterTransaction(playerUUID, () -> time, playerName, serverUUID)); + sessionCache.cacheSession(playerUUID, new Session(playerUUID, serverUUID, time, world, gm)) .ifPresent(previousSession -> database.executeTransaction(new SessionEndTransaction(previousSession))); database.executeTransaction(new NicknameStoreTransaction( - uuid, new Nickname(displayName, time, serverUUID), - (playerUUID, name) -> name.equals(nicknameCache.getDisplayName(playerUUID)) + playerUUID, new Nickname(displayName, time, serverUUID), + (uuid, name) -> name.equals(nicknameCache.getDisplayName(uuid)) )); - processing.submitNonCritical(processors.info().playerPageUpdateProcessor(uuid)); + processing.submitNonCritical(processors.info().playerPageUpdateProcessor(playerUUID)); + processing.submitNonCritical(() -> extensionService.updatePlayerValues(playerUUID, playerName)); } @Listener(order = Order.POST) diff --git a/Plan/sponge/src/main/java/com/djrapitops/plan/system/listeners/sponge/SpongeAFKListener.java b/Plan/sponge/src/main/java/com/djrapitops/plan/system/listeners/sponge/SpongeAFKListener.java index 222ac357d..ea1192b24 100644 --- a/Plan/sponge/src/main/java/com/djrapitops/plan/system/listeners/sponge/SpongeAFKListener.java +++ b/Plan/sponge/src/main/java/com/djrapitops/plan/system/listeners/sponge/SpongeAFKListener.java @@ -37,10 +37,10 @@ import java.util.UUID; /** * Listener that keeps track of actions that are not considered being AFK. *

- * Additional Listener calls in SpongePlayerListener to avoid having HIGHEST priority listeners. + * Additional Listener calls in PlayerOnlineListener to avoid having HIGHEST priority listeners. * * @author Rsl1122 - * @see SpongePlayerListener + * @see PlayerOnlineListener */ public class SpongeAFKListener { diff --git a/Plan/velocity/src/main/java/com/djrapitops/plan/system/listeners/velocity/PlayerOnlineListener.java b/Plan/velocity/src/main/java/com/djrapitops/plan/system/listeners/velocity/PlayerOnlineListener.java index 924ae6ac4..5e5e98ca5 100644 --- a/Plan/velocity/src/main/java/com/djrapitops/plan/system/listeners/velocity/PlayerOnlineListener.java +++ b/Plan/velocity/src/main/java/com/djrapitops/plan/system/listeners/velocity/PlayerOnlineListener.java @@ -20,6 +20,7 @@ import com.djrapitops.plan.data.container.Session; import com.djrapitops.plan.db.Database; import com.djrapitops.plan.db.access.transactions.events.GeoInfoStoreTransaction; import com.djrapitops.plan.db.access.transactions.events.PlayerRegisterTransaction; +import com.djrapitops.plan.extension.ExtensionServiceImplementation; import com.djrapitops.plan.system.cache.GeolocationCache; import com.djrapitops.plan.system.cache.SessionCache; import com.djrapitops.plan.system.database.DBSystem; @@ -57,6 +58,7 @@ public class PlayerOnlineListener { private final Processors processors; private final Processing processing; private final DBSystem dbSystem; + private final ExtensionServiceImplementation extensionService; private final GeolocationCache geolocationCache; private final SessionCache sessionCache; private final ServerInfo serverInfo; @@ -68,6 +70,7 @@ public class PlayerOnlineListener { Processing processing, Processors processors, DBSystem dbSystem, + ExtensionServiceImplementation extensionService, GeolocationCache geolocationCache, SessionCache sessionCache, ServerInfo serverInfo, @@ -77,6 +80,7 @@ public class PlayerOnlineListener { this.processing = processing; this.processors = processors; this.dbSystem = dbSystem; + this.extensionService = extensionService; this.geolocationCache = geolocationCache; this.sessionCache = sessionCache; this.serverInfo = serverInfo; @@ -88,7 +92,7 @@ public class PlayerOnlineListener { try { Player player = event.getPlayer(); UUID playerUUID = player.getUniqueId(); - String name = player.getUsername(); + String playerName = player.getUsername(); InetAddress address = player.getRemoteAddress().getAddress(); long time = System.currentTimeMillis(); @@ -103,8 +107,9 @@ public class PlayerOnlineListener { ); } - database.executeTransaction(new PlayerRegisterTransaction(playerUUID, () -> time, name)); + database.executeTransaction(new PlayerRegisterTransaction(playerUUID, () -> time, playerName)); processing.submit(processors.info().playerPageUpdateProcessor(playerUUID)); + processing.submitNonCritical(() -> extensionService.updatePlayerValues(playerUUID, playerName)); ResponseCache.clearResponse(PageId.SERVER.of(serverInfo.getServerUUID())); } catch (Exception e) { errorHandler.log(L.WARN, this.getClass(), e);