Plan/Plan Advanced/src/com/djrapitops/plan/datahandlers/listeners/PlanPlayerListener.java

87 lines
3.4 KiB
Java

package com.djrapitops.plan.datahandlers.listeners;
import com.djrapitops.plan.Plan;
import com.djrapitops.plan.datahandlers.ActivityHandler;
import com.djrapitops.plan.datahandlers.DataHandler;
import com.djrapitops.plan.datahandlers.DemographicsHandler;
import com.djrapitops.plan.datahandlers.LocationHandler;
import com.djrapitops.plan.datahandlers.RuleBreakingHandler;
import com.djrapitops.plan.datahandlers.ServerDataHandler;
import com.djrapitops.plan.database.UserData;
import com.djrapitops.plan.datahandlers.BasicInfoHandler;
import com.djrapitops.plan.datahandlers.GamemodeTimesHandler;
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.PlayerLoginEvent.Result;
import org.bukkit.event.player.PlayerQuitEvent;
public class PlanPlayerListener implements Listener {
private final DataHandler 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;
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();
}
@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);
}
@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);
handler.clearFromCache(uuid);
}
@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);
}
}