114 lines
3.7 KiB
Java
114 lines
3.7 KiB
Java
package com.djrapitops.plan.data.listeners;
|
|
|
|
import com.djrapitops.plan.Plan;
|
|
import com.djrapitops.plan.data.UserData;
|
|
import com.djrapitops.plan.data.cache.DataCacheHandler;
|
|
import com.djrapitops.plan.data.handlers.*;
|
|
import java.util.UUID;
|
|
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.PlayerQuitEvent;
|
|
|
|
/**
|
|
*
|
|
* @author Rsl1122
|
|
*/
|
|
public class PlanPlayerListener implements Listener {
|
|
|
|
private final DataCacheHandler handler;
|
|
private final ActivityHandler activityH;
|
|
private final BasicInfoHandler basicInfoH;
|
|
private final GamemodeTimesHandler gmTimesH;
|
|
private final LocationHandler locationH;
|
|
private final DemographicsHandler demographicH;
|
|
private final RuleBreakingHandler rulebreakH;
|
|
private final ServerDataHandler serverHandler;
|
|
|
|
/**
|
|
* Class Constructor.
|
|
*
|
|
* Copies the references to multiple handlers from Current instance of
|
|
* handler.
|
|
*
|
|
* @param plugin Current instance of Plan
|
|
*/
|
|
public PlanPlayerListener(Plan plugin) {
|
|
handler = plugin.getHandler();
|
|
activityH = handler.getActivityHandler();
|
|
basicInfoH = handler.getBasicInfoHandler();
|
|
gmTimesH = handler.getGamemodeTimesHandler();
|
|
demographicH = handler.getDemographicsHandler();
|
|
locationH = handler.getLocationHandler();
|
|
rulebreakH = handler.getRuleBreakingHandler();
|
|
serverHandler = handler.getServerDataHandler();
|
|
}
|
|
|
|
/**
|
|
* PlayerJoinEvent Listener.
|
|
*
|
|
* If player is a new player, creates a new data in the database for the
|
|
* player. Retrieves the UserData, updates and then saves it to the Cache.
|
|
*
|
|
* @param event The Fired event.
|
|
*/
|
|
@EventHandler(priority = EventPriority.MONITOR)
|
|
public void onPlayerLogin(PlayerJoinEvent event) {
|
|
Player player = event.getPlayer();
|
|
UUID uuid = player.getUniqueId();
|
|
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);
|
|
gmTimesH.handleLogin(event, data);
|
|
demographicH.handleLogin(event, data);
|
|
handler.saveCachedData(uuid);
|
|
}
|
|
|
|
/**
|
|
* PlayerQuitEvent Listener.
|
|
*
|
|
* Retrieves the current UserData for the Player, updates it, saves the data
|
|
* to Database and clears it from cache.
|
|
*
|
|
* @param event Fired event
|
|
*/
|
|
@EventHandler(priority = EventPriority.MONITOR)
|
|
public void onPlayerQuit(PlayerQuitEvent event) {
|
|
UUID uuid = event.getPlayer().getUniqueId();
|
|
UserData data = handler.getCurrentData(uuid);
|
|
activityH.handleLogOut(event, data);
|
|
locationH.handleLogOut(event, data);
|
|
gmTimesH.handleLogOut(event, data);
|
|
serverHandler.handleLogout();
|
|
handler.saveCachedData(uuid);
|
|
}
|
|
|
|
/**
|
|
* PlayerKickEvent Listener.
|
|
*
|
|
* Updates current playerdata and saves it to the Database.
|
|
*
|
|
* @param event Fired event
|
|
*/
|
|
@EventHandler(priority = EventPriority.MONITOR)
|
|
public void onPlayerKick(PlayerKickEvent event) {
|
|
if (event.isCancelled()) {
|
|
return;
|
|
}
|
|
UUID uuid = event.getPlayer().getUniqueId();
|
|
UserData data = handler.getCurrentData(uuid);
|
|
rulebreakH.handleKick(event, data);
|
|
serverHandler.handleKick();
|
|
handler.saveCachedData(uuid);
|
|
handler.clearFromCache(uuid);
|
|
}
|
|
}
|