mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2025-04-12 18:20:26 +08:00
Moved to new abstracted task system to add Status command.
This commit is contained in:
parent
faca03755d
commit
754d437fd9
@ -16,7 +16,7 @@
|
||||
<dependency>
|
||||
<groupId>com.djrapitops</groupId>
|
||||
<artifactId>BukkitPluginDependency</artifactId>
|
||||
<version>1.0.0</version>
|
||||
<version>1.1.0</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
@ -16,7 +16,7 @@ public class Log {
|
||||
* @param message "Message" will show up as [INFO][Plan]: Message
|
||||
*/
|
||||
public static void info(String message) {
|
||||
Plan.getInstance().getPluginLogger().info(message);
|
||||
Plan.getPluginInstance().getPluginLogger().info(message);
|
||||
}
|
||||
|
||||
public static void infoColor(String message) {
|
||||
|
@ -65,7 +65,7 @@ public enum Phrase {
|
||||
NOT_IN_FAC("Not in a faction"),
|
||||
//
|
||||
ANALYSIS("Analysis | "),
|
||||
COMMAND_TIMEOUT(ChatColor.RED + "" + PREFIX + "REPLACE0 Command timed out! Error most likely on console."),
|
||||
COMMAND_TIMEOUT(ChatColor.RED + "" + PREFIX + "REPLACE0 Command timed out! Check '/plan status' & console."),
|
||||
ANALYSIS_START(ANALYSIS + "Beginning analysis of user data.."),
|
||||
ANALYSIS_BOOT_NOTIFY(ANALYSIS + "Boot analysis in 30 seconds.."),
|
||||
ANALYSIS_BOOT(ANALYSIS + "Starting Boot Analysis.."),
|
||||
@ -110,6 +110,7 @@ public enum Phrase {
|
||||
CMD_INFO_HEADER(CMD_FOOTER + "" + COLOR_MAIN.color() + " Player Analytics - Info"),
|
||||
CMD_INFO_VERSION(CMD_BALL + "" + COLOR_MAIN.color() + " Version: " + COLOR_SEC.color() + REPLACE0),
|
||||
CMD_SEARCH_HEADER(CMD_FOOTER + "" + COLOR_MAIN.color() + " Player Analytics - Search results for: "),
|
||||
CMD_SEARCH_SEARCHING(CMD_FOOTER + "" + COLOR_MAIN.color() + " Searching.."),
|
||||
CMD_HELP_HEADER(CMD_FOOTER + "" + COLOR_MAIN.color() + " Player Analytics - Help"),
|
||||
CMD_MANAGE_HELP_HEADER(CMD_FOOTER + "" + COLOR_MAIN.color() + " Player Analytics - Managment Help"),
|
||||
CMD_MANAGE_STATUS_HEADER(CMD_FOOTER + "" + COLOR_MAIN.color() + " Player Analytics - Database status"),
|
||||
@ -123,7 +124,7 @@ public enum Phrase {
|
||||
CMD_PASS_PLANLITE("UNUSED"),
|
||||
CMD_RESULTS_AVAILABLE(COLOR_SEC.color() + " Results will be available for " + COLOR_TER.color() + REPLACE0 + COLOR_SEC.color() + " minutes."),
|
||||
CMD_NO_RESULTS(CMD_BALL + " No results for " + COLOR_SEC.color() + REPLACE0 + COLOR_MAIN.color() + "."),
|
||||
CMD_MATCH(COLOR_SEC.color() + " Matching player: " + COLOR_TER.color()),
|
||||
CMD_MATCH(COLOR_SEC.color() + " Matching players: " + COLOR_TER.color()),
|
||||
//
|
||||
CMD_USG_ANALYZE("View the Server Analysis"),
|
||||
CMD_USG_QANALYZE("View the Server QuickAnalysis"),
|
||||
|
@ -21,6 +21,8 @@ package main.java.com.djrapitops.plan;
|
||||
|
||||
import com.djrapitops.javaplugin.ColorScheme;
|
||||
import com.djrapitops.javaplugin.RslPlugin;
|
||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
||||
import com.djrapitops.javaplugin.task.RslTask;
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileOutputStream;
|
||||
@ -44,8 +46,6 @@ import main.java.com.djrapitops.plan.utilities.MiscUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Server;
|
||||
import org.bukkit.plugin.PluginManager;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
|
||||
/**
|
||||
* Javaplugin class that contains methods for starting the plugin, logging to
|
||||
@ -236,7 +236,7 @@ public class Plan extends RslPlugin<Plan> {
|
||||
}
|
||||
|
||||
private void startAnalysisRefreshTask(int analysisRefreshMinutes) throws IllegalStateException, IllegalArgumentException {
|
||||
BukkitTask asyncPeriodicalAnalysisTask = new BukkitRunnable() {
|
||||
RslTask task = new RslBukkitRunnable<Plan>("PeriodicalAnalysisTask") {
|
||||
@Override
|
||||
public void run() {
|
||||
if (!analysisCache.isCached()) {
|
||||
@ -245,19 +245,19 @@ public class Plan extends RslPlugin<Plan> {
|
||||
analysisCache.updateCache();
|
||||
}
|
||||
}
|
||||
}.runTaskTimerAsynchronously(this, analysisRefreshMinutes * 60 * 20, analysisRefreshMinutes * 60 * 20);
|
||||
}.runTaskTimerAsynchronously(analysisRefreshMinutes * 60 * 20, analysisRefreshMinutes * 60 * 20);
|
||||
}
|
||||
|
||||
private void startBootAnalysisTask() throws IllegalStateException, IllegalArgumentException {
|
||||
Log.info(Phrase.ANALYSIS_BOOT_NOTIFY + "");
|
||||
BukkitTask bootAnalysisTask = new BukkitRunnable() {
|
||||
RslTask bootAnalysisTask = new RslBukkitRunnable<Plan>("BootAnalysisTask") {
|
||||
@Override
|
||||
public void run() {
|
||||
Log.info(Phrase.ANALYSIS_BOOT + "");
|
||||
analysisCache.updateCache();
|
||||
this.cancel();
|
||||
}
|
||||
}.runTaskLater(this, 30 * 20);
|
||||
}.runTaskLaterAsynchronously(30 * 20);
|
||||
bootAnalysisTaskID = bootAnalysisTask.getTaskId();
|
||||
}
|
||||
|
||||
@ -420,7 +420,7 @@ public class Plan extends RslPlugin<Plan> {
|
||||
}
|
||||
return INSTANCE.api;
|
||||
}
|
||||
|
||||
|
||||
public static Plan getInstance() {
|
||||
return (Plan) getPluginInstance();
|
||||
}
|
||||
|
@ -13,7 +13,7 @@ import org.bukkit.OfflinePlayer;
|
||||
* @author Rsl1122
|
||||
* @since 3.5.0
|
||||
*/
|
||||
public class CommandUtils {
|
||||
public class ConditionUtils {
|
||||
|
||||
public static boolean pluginHasViewCapability() {
|
||||
final boolean usingAlternativeIP = Settings.SHOW_ALTERNATIVE_IP.isTrue();
|
@ -1,10 +1,10 @@
|
||||
package main.java.com.djrapitops.plan.command;
|
||||
|
||||
import com.djrapitops.javaplugin.command.CommandType;
|
||||
import com.djrapitops.javaplugin.command.StatusCommand;
|
||||
import com.djrapitops.javaplugin.command.SubCommand;
|
||||
import com.djrapitops.javaplugin.command.TreeCommand;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.command.commands.*;
|
||||
import org.bukkit.command.Command;
|
||||
@ -35,7 +35,7 @@ public class PlanCommand extends TreeCommand<Plan> implements CommandExecutor {
|
||||
}, "plan");
|
||||
super.setDefaultCommand("inspect");
|
||||
// commands.add(new HelpCommand(plugin, this));
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -48,5 +48,6 @@ public class PlanCommand extends TreeCommand<Plan> implements CommandExecutor {
|
||||
commands.add(new InfoCommand(plugin));
|
||||
commands.add(new ReloadCommand(plugin));
|
||||
commands.add(new ManageCommand(plugin));
|
||||
commands.add(new StatusCommand(plugin, Permissions.MANAGE.getPermission()));
|
||||
}
|
||||
}
|
||||
|
@ -2,12 +2,14 @@ package main.java.com.djrapitops.plan.command.commands;
|
||||
|
||||
import com.djrapitops.javaplugin.command.CommandType;
|
||||
import com.djrapitops.javaplugin.command.SubCommand;
|
||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
||||
import com.djrapitops.javaplugin.task.RslTask;
|
||||
import main.java.com.djrapitops.plan.Log;
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.Settings;
|
||||
import main.java.com.djrapitops.plan.command.CommandUtils;
|
||||
import main.java.com.djrapitops.plan.command.ConditionUtils;
|
||||
import main.java.com.djrapitops.plan.data.cache.AnalysisCacheHandler;
|
||||
import main.java.com.djrapitops.plan.ui.TextUI;
|
||||
import main.java.com.djrapitops.plan.utilities.HtmlUtils;
|
||||
@ -16,8 +18,6 @@ import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
|
||||
/**
|
||||
* This subcommand is used to run the analysis and access the /server link.
|
||||
@ -43,7 +43,7 @@ public class AnalyzeCommand extends SubCommand {
|
||||
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
|
||||
if (!CommandUtils.pluginHasViewCapability()) {
|
||||
if (!ConditionUtils.pluginHasViewCapability()) {
|
||||
sender.sendMessage(Phrase.ERROR_WEBSERVER_OFF_ANALYSIS + "");
|
||||
return true;
|
||||
}
|
||||
@ -55,7 +55,7 @@ public class AnalyzeCommand extends SubCommand {
|
||||
}
|
||||
analysisCache.updateCache();
|
||||
}
|
||||
final BukkitTask analysisMessageSenderTask = new BukkitRunnable() {
|
||||
final RslTask task = new RslBukkitRunnable<Plan>("AnalysisMessageSenderTask") {
|
||||
private int timesrun = 0;
|
||||
|
||||
@Override
|
||||
@ -72,7 +72,7 @@ public class AnalyzeCommand extends SubCommand {
|
||||
this.cancel();
|
||||
}
|
||||
}
|
||||
}.runTaskTimer(plugin, 1 * 20, 5 * 20);
|
||||
}.runTaskTimer(1 * 20, 5 * 20);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -2,7 +2,9 @@ package main.java.com.djrapitops.plan.command.commands;
|
||||
|
||||
import com.djrapitops.javaplugin.command.CommandType;
|
||||
import com.djrapitops.javaplugin.command.SubCommand;
|
||||
import main.java.com.djrapitops.plan.command.CommandUtils;
|
||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
||||
import com.djrapitops.javaplugin.task.RslTask;
|
||||
import main.java.com.djrapitops.plan.command.ConditionUtils;
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.Log;
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
@ -19,8 +21,6 @@ import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandException;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
|
||||
/**
|
||||
* This command is used to cache UserData to InspectCache and display the link.
|
||||
@ -47,18 +47,18 @@ public class InspectCommand extends SubCommand {
|
||||
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
|
||||
if (!CommandUtils.pluginHasViewCapability()) {
|
||||
if (!ConditionUtils.pluginHasViewCapability()) {
|
||||
sender.sendMessage(Phrase.ERROR_WEBSERVER_OFF_INSPECT + "");
|
||||
return true;
|
||||
}
|
||||
String playerName = MiscUtils.getPlayerName(args, sender);
|
||||
final BukkitTask inspectTask = new BukkitRunnable() {
|
||||
final RslTask inspectTask = new RslBukkitRunnable<Plan>("InspectTask") {
|
||||
@Override
|
||||
public void run() {
|
||||
UUID uuid = CommandUtils.getUUID(playerName);
|
||||
UUID uuid = ConditionUtils.getUUID(playerName);
|
||||
Condition[] preConditions = new Condition[]{
|
||||
new Condition(CommandUtils.uuidIsValid(uuid), Phrase.USERNAME_NOT_VALID.toString()),
|
||||
new Condition(CommandUtils.playerHasPlayed(uuid), Phrase.USERNAME_NOT_SEEN.toString()),
|
||||
new Condition(ConditionUtils.uuidIsValid(uuid), Phrase.USERNAME_NOT_VALID.toString()),
|
||||
new Condition(ConditionUtils.playerHasPlayed(uuid), Phrase.USERNAME_NOT_SEEN.toString()),
|
||||
new Condition(plugin.getDB().wasSeenBefore(uuid), Phrase.USERNAME_NOT_KNOWN.toString())
|
||||
};
|
||||
|
||||
@ -71,7 +71,7 @@ public class InspectCommand extends SubCommand {
|
||||
}
|
||||
sender.sendMessage(Phrase.GRABBING_DATA_MESSAGE + "");
|
||||
inspectCache.cache(uuid);
|
||||
final BukkitTask inspectMessageSenderTask = new BukkitRunnable() {
|
||||
final RslTask inspectMessageSenderTask = new RslBukkitRunnable<Plan>("InspectMessageSenderTask") {
|
||||
private int timesrun = 0;
|
||||
|
||||
@Override
|
||||
@ -89,9 +89,10 @@ public class InspectCommand extends SubCommand {
|
||||
}
|
||||
}
|
||||
|
||||
}.runTaskTimer(plugin, 1 * 20, 5 * 20);
|
||||
}
|
||||
}.runTaskAsynchronously(plugin);
|
||||
}.runTaskTimer(1 * 20, 5 * 20);
|
||||
this.cancel();
|
||||
}
|
||||
}.runTaskAsynchronously();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -2,6 +2,8 @@ package main.java.com.djrapitops.plan.command.commands;
|
||||
|
||||
import com.djrapitops.javaplugin.command.CommandType;
|
||||
import com.djrapitops.javaplugin.command.SubCommand;
|
||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
||||
import com.djrapitops.javaplugin.task.RslTask;
|
||||
import main.java.com.djrapitops.plan.Log;
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
@ -11,8 +13,6 @@ import main.java.com.djrapitops.plan.ui.TextUI;
|
||||
import main.java.com.djrapitops.plan.utilities.MiscUtils;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
|
||||
/**
|
||||
* This subcommand is used to run the analysis and to view some of the data in
|
||||
@ -50,7 +50,7 @@ public class QuickAnalyzeCommand extends SubCommand {
|
||||
analysisCache.updateCache();
|
||||
}
|
||||
|
||||
BukkitTask analysisMessageSenderTask = new BukkitRunnable() {
|
||||
RslTask analysisMessageSenderTask = new RslBukkitRunnable<Plan>("QanalysisMessageSenderTask") {
|
||||
private int timesrun = 0;
|
||||
|
||||
@Override
|
||||
@ -68,7 +68,7 @@ public class QuickAnalyzeCommand extends SubCommand {
|
||||
this.cancel();
|
||||
}
|
||||
}
|
||||
}.runTaskTimer(plugin, 1 * 20, 5 * 20);
|
||||
}.runTaskTimer(1 * 20, 5 * 20);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -2,20 +2,20 @@ package main.java.com.djrapitops.plan.command.commands;
|
||||
|
||||
import com.djrapitops.javaplugin.command.CommandType;
|
||||
import com.djrapitops.javaplugin.command.SubCommand;
|
||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
||||
import com.djrapitops.javaplugin.task.RslTask;
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.Log;
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.command.CommandUtils;
|
||||
import main.java.com.djrapitops.plan.command.ConditionUtils;
|
||||
import main.java.com.djrapitops.plan.command.Condition;
|
||||
import main.java.com.djrapitops.plan.data.cache.InspectCacheHandler;
|
||||
import main.java.com.djrapitops.plan.ui.TextUI;
|
||||
import main.java.com.djrapitops.plan.utilities.MiscUtils;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
|
||||
/**
|
||||
* This command is used to cache UserData to InspectCache and to view some of
|
||||
@ -35,7 +35,7 @@ public class QuickInspectCommand extends SubCommand {
|
||||
* @param plugin Current instance of Plan
|
||||
*/
|
||||
public QuickInspectCommand(Plan plugin) {
|
||||
super("qinspect", CommandType.CONSOLE_WITH_ARGUMENTS, Permissions.QUICK_INSPECT.getPermission(), Phrase.CMD_USG_QINSPECT + "", Phrase.ARG_PLAYER + "");
|
||||
super("qinspect", CommandType.CONSOLE_WITH_ARGUMENTS, Permissions.QUICK_INSPECT.getPermission(), Phrase.CMD_USG_QINSPECT + "", Phrase.ARG_PLAYER + "");
|
||||
|
||||
this.plugin = plugin;
|
||||
inspectCache = plugin.getInspectCache();
|
||||
@ -44,13 +44,13 @@ public class QuickInspectCommand extends SubCommand {
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
|
||||
String playerName = MiscUtils.getPlayerName(args, sender, Permissions.QUICK_INSPECT_OTHER);
|
||||
final BukkitTask inspectTask = new BukkitRunnable() {
|
||||
final RslTask inspectTask = new RslBukkitRunnable<Plan>("QinspectTask") {
|
||||
@Override
|
||||
public void run() {
|
||||
UUID uuid = CommandUtils.getUUID(playerName);
|
||||
UUID uuid = ConditionUtils.getUUID(playerName);
|
||||
Condition[] preConditions = new Condition[]{
|
||||
new Condition(CommandUtils.uuidIsValid(uuid), Phrase.USERNAME_NOT_VALID.toString()),
|
||||
new Condition(CommandUtils.playerHasPlayed(uuid), Phrase.USERNAME_NOT_SEEN.toString()),
|
||||
new Condition(ConditionUtils.uuidIsValid(uuid), Phrase.USERNAME_NOT_VALID.toString()),
|
||||
new Condition(ConditionUtils.playerHasPlayed(uuid), Phrase.USERNAME_NOT_SEEN.toString()),
|
||||
new Condition(plugin.getDB().wasSeenBefore(uuid), Phrase.USERNAME_NOT_KNOWN.toString())
|
||||
};
|
||||
|
||||
@ -63,7 +63,7 @@ public class QuickInspectCommand extends SubCommand {
|
||||
}
|
||||
sender.sendMessage(Phrase.GRABBING_DATA_MESSAGE + "");
|
||||
inspectCache.cache(uuid);
|
||||
final BukkitTask inspectMessageSenderTask = new BukkitRunnable() {
|
||||
final RslTask inspectMessageSenderTask = new RslBukkitRunnable<Plan>("QinspectMessageSenderTask") {
|
||||
private int timesrun = 0;
|
||||
|
||||
@Override
|
||||
@ -81,9 +81,10 @@ public class QuickInspectCommand extends SubCommand {
|
||||
this.cancel();
|
||||
}
|
||||
}
|
||||
}.runTaskTimer(plugin, 1 * 20, 5 * 20);
|
||||
}.runTaskTimer(1 * 20, 5 * 20);
|
||||
this.cancel();
|
||||
}
|
||||
}.runTaskAsynchronously(plugin);
|
||||
}.runTaskAsynchronously();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -2,25 +2,23 @@ package main.java.com.djrapitops.plan.command.commands;
|
||||
|
||||
import com.djrapitops.javaplugin.command.CommandType;
|
||||
import com.djrapitops.javaplugin.command.SubCommand;
|
||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
||||
import com.djrapitops.javaplugin.task.RslTask;
|
||||
import com.djrapitops.javaplugin.utilities.FormattingUtils;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.command.CommandUtils;
|
||||
import main.java.com.djrapitops.plan.command.Condition;
|
||||
import main.java.com.djrapitops.plan.data.cache.InspectCacheHandler;
|
||||
import main.java.com.djrapitops.plan.utilities.HtmlUtils;
|
||||
import main.java.com.djrapitops.plan.utilities.MiscUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
|
||||
/**
|
||||
* This subcommand is used to search for a user, and to view all matches' data.
|
||||
@ -46,65 +44,32 @@ public class SearchCommand extends SubCommand {
|
||||
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
|
||||
if (!CommandUtils.pluginHasViewCapability()) {
|
||||
sender.sendMessage(Phrase.ERROR_WEBSERVER_OFF_ANALYSIS.toString());
|
||||
return true;
|
||||
}
|
||||
Condition c = new Condition(args.length != 1, Phrase.COMMAND_REQUIRES_ARGUMENTS_ONE.toString());
|
||||
if (c.pass()) {
|
||||
sender.sendMessage(c.getFailMsg());
|
||||
return true;
|
||||
}
|
||||
|
||||
sender.sendMessage(Phrase.GRABBING_DATA_MESSAGE + "");
|
||||
Set<OfflinePlayer> matches = MiscUtils.getMatchingDisplaynames(args[0]);
|
||||
final BukkitTask searchTask = new BukkitRunnable() {
|
||||
sender.sendMessage(Phrase.CMD_SEARCH_SEARCHING + "");
|
||||
final RslTask searchTask = new RslBukkitRunnable<Plan>("SearchTask: " + Arrays.toString(args)) {
|
||||
@Override
|
||||
public void run() {
|
||||
Set<UUID> uuids = new HashSet<>();
|
||||
for (OfflinePlayer match : matches) {
|
||||
UUID uuid = match.getUniqueId();
|
||||
if (plugin.getDB().wasSeenBefore(uuid)) {
|
||||
uuids.add(uuid);
|
||||
inspectCache.cache(uuid);
|
||||
try {
|
||||
Set<OfflinePlayer> matches = MiscUtils.getMatchingDisplaynames(args[0]);
|
||||
sender.sendMessage(Phrase.CMD_SEARCH_HEADER + args[0] + " (" + matches.size() + ")");
|
||||
// Results
|
||||
if (matches.isEmpty()) {
|
||||
sender.sendMessage(Phrase.CMD_NO_RESULTS.parse(Arrays.toString(args)));
|
||||
} else {
|
||||
List<String> names = matches.stream().map(p -> p.getName()).collect(Collectors.toList());
|
||||
Collections.sort(names);
|
||||
sender.sendMessage(Phrase.CMD_MATCH + "" + FormattingUtils.collectionToStringNoBrackets(names));
|
||||
}
|
||||
sender.sendMessage(Phrase.CMD_FOOTER + "");
|
||||
} finally {
|
||||
this.cancel();
|
||||
}
|
||||
sender.sendMessage(Phrase.CMD_SEARCH_HEADER + args[0]);
|
||||
// Results
|
||||
if (uuids.isEmpty()) {
|
||||
sender.sendMessage(Phrase.CMD_NO_RESULTS.parse(Arrays.toString(args)));
|
||||
} else {
|
||||
for (OfflinePlayer match : matches) {
|
||||
if (!uuids.contains(match.getUniqueId())) {
|
||||
continue;
|
||||
}
|
||||
String name = match.getName();
|
||||
sender.sendMessage(Phrase.CMD_MATCH + name);
|
||||
// Link
|
||||
String url = HtmlUtils.getInspectUrlWithProtocol(name);
|
||||
String message = Phrase.CMD_LINK + "";
|
||||
boolean console = !(sender instanceof Player);
|
||||
if (console) {
|
||||
sender.sendMessage(message + url);
|
||||
} else {
|
||||
sender.sendMessage(message);
|
||||
Player player = (Player) sender;
|
||||
final BukkitTask link = new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
Bukkit.getServer().dispatchCommand(
|
||||
Bukkit.getConsoleSender(),
|
||||
"tellraw " + player.getName() + " [\"\",{\"text\":\"Click Me\",\"underlined\":true,"
|
||||
+ "\"clickEvent\":{\"action\":\"open_url\",\"value\":\"" + url + "\"}}]");
|
||||
}
|
||||
}.runTask(plugin);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
sender.sendMessage(Phrase.CMD_FOOTER + "");
|
||||
}
|
||||
}.runTaskAsynchronously(plugin);
|
||||
}.runTaskAsynchronously();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package main.java.com.djrapitops.plan.command.commands.manage;
|
||||
|
||||
import com.djrapitops.javaplugin.command.CommandType;
|
||||
import com.djrapitops.javaplugin.command.SubCommand;
|
||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
||||
import main.java.com.djrapitops.plan.Log;
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
@ -10,7 +11,6 @@ import main.java.com.djrapitops.plan.database.Database;
|
||||
import main.java.com.djrapitops.plan.utilities.ManageUtils;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
/**
|
||||
* This manage subcommand is used to backup a database to a .db file.
|
||||
@ -61,7 +61,7 @@ public class ManageBackupCommand extends SubCommand {
|
||||
return true;
|
||||
}
|
||||
final Database copyFromDB = database;
|
||||
(new BukkitRunnable() {
|
||||
(new RslBukkitRunnable<Plan>("BackupTask") {
|
||||
@Override
|
||||
public void run() {
|
||||
sender.sendMessage(Phrase.MANAGE_PROCESS_START.parse());
|
||||
@ -72,7 +72,7 @@ public class ManageBackupCommand extends SubCommand {
|
||||
}
|
||||
this.cancel();
|
||||
}
|
||||
}).runTaskAsynchronously(plugin);
|
||||
}).runTaskAsynchronously();
|
||||
} catch (NullPointerException e) {
|
||||
sender.sendMessage(Phrase.MANAGE_DATABASE_FAILURE + "");
|
||||
}
|
||||
|
@ -2,8 +2,7 @@ package main.java.com.djrapitops.plan.command.commands.manage;
|
||||
|
||||
import com.djrapitops.javaplugin.command.CommandType;
|
||||
import com.djrapitops.javaplugin.command.SubCommand;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Arrays;
|
||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
||||
import main.java.com.djrapitops.plan.Log;
|
||||
import main.java.com.djrapitops.plan.Permissions;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
@ -11,7 +10,6 @@ import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.database.Database;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
/**
|
||||
* This manage subcommand is used to clear a database of all data.
|
||||
@ -60,7 +58,7 @@ public class ManageCleanCommand extends SubCommand {
|
||||
}
|
||||
|
||||
final Database clearThisDB = clearDB;
|
||||
(new BukkitRunnable() {
|
||||
(new RslBukkitRunnable<Plan>("DBCleanTask") {
|
||||
@Override
|
||||
public void run() {
|
||||
sender.sendMessage(Phrase.MANAGE_PROCESS_START.parse());
|
||||
@ -68,7 +66,7 @@ public class ManageCleanCommand extends SubCommand {
|
||||
sender.sendMessage(Phrase.MANAGE_SUCCESS + "");
|
||||
this.cancel();
|
||||
}
|
||||
}).runTaskAsynchronously(plugin);
|
||||
}).runTaskAsynchronously();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package main.java.com.djrapitops.plan.command.commands.manage;
|
||||
|
||||
import com.djrapitops.javaplugin.command.CommandType;
|
||||
import com.djrapitops.javaplugin.command.SubCommand;
|
||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Arrays;
|
||||
import main.java.com.djrapitops.plan.Log;
|
||||
@ -11,7 +12,6 @@ import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.database.Database;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
/**
|
||||
* This manage subcommand is used to clear a database of all data.
|
||||
@ -64,7 +64,7 @@ public class ManageClearCommand extends SubCommand {
|
||||
}
|
||||
|
||||
final Database clearThisDB = clearDB;
|
||||
(new BukkitRunnable() {
|
||||
(new RslBukkitRunnable<Plan>("DBClearTask") {
|
||||
@Override
|
||||
public void run() {
|
||||
sender.sendMessage(Phrase.MANAGE_PROCESS_START.parse());
|
||||
@ -80,7 +80,7 @@ public class ManageClearCommand extends SubCommand {
|
||||
}
|
||||
this.cancel();
|
||||
}
|
||||
}).runTaskAsynchronously(plugin);
|
||||
}).runTaskAsynchronously();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,8 @@ package main.java.com.djrapitops.plan.command.commands.manage;
|
||||
|
||||
import com.djrapitops.javaplugin.command.CommandType;
|
||||
import com.djrapitops.javaplugin.command.SubCommand;
|
||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
||||
import com.djrapitops.javaplugin.task.RslTask;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@ -15,8 +17,6 @@ import main.java.com.djrapitops.plan.data.handling.importing.Importer;
|
||||
import static org.bukkit.Bukkit.getOfflinePlayers;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
|
||||
/**
|
||||
* This manage subcommand is used to import data from 3rd party plugins.
|
||||
@ -66,7 +66,7 @@ public class ManageImportCommand extends SubCommand {
|
||||
}
|
||||
|
||||
final Importer importer = importPlugins.get(importFromPlugin);
|
||||
BukkitTask asyncImportTask = new BukkitRunnable() {
|
||||
RslTask asyncImportTask = new RslBukkitRunnable<Plan>("ImportTask") {
|
||||
@Override
|
||||
public void run() {
|
||||
sender.sendMessage(Phrase.MANAGE_IMPORTING + "");
|
||||
@ -78,7 +78,7 @@ public class ManageImportCommand extends SubCommand {
|
||||
}
|
||||
this.cancel();
|
||||
}
|
||||
}.runTaskAsynchronously(plugin);
|
||||
}.runTaskAsynchronously();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package main.java.com.djrapitops.plan.command.commands.manage;
|
||||
|
||||
import com.djrapitops.javaplugin.command.CommandType;
|
||||
import com.djrapitops.javaplugin.command.SubCommand;
|
||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.UUID;
|
||||
@ -13,7 +14,6 @@ import main.java.com.djrapitops.plan.database.Database;
|
||||
import main.java.com.djrapitops.plan.utilities.ManageUtils;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
/**
|
||||
* This manage subcommand is used to move all data from one database to another.
|
||||
@ -88,7 +88,7 @@ public class ManageMoveCommand extends SubCommand {
|
||||
|
||||
final Database moveFromDB = fromDatabase;
|
||||
final Database moveToDB = toDatabase;
|
||||
(new BukkitRunnable() {
|
||||
(new RslBukkitRunnable<Plan>("DBMoveTask") {
|
||||
@Override
|
||||
public void run() {
|
||||
final Collection<UUID> uuids = ManageUtils.getUUIDS(moveFromDB);
|
||||
@ -108,7 +108,7 @@ public class ManageMoveCommand extends SubCommand {
|
||||
}
|
||||
this.cancel();
|
||||
}
|
||||
}).runTaskAsynchronously(plugin);
|
||||
}).runTaskAsynchronously();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package main.java.com.djrapitops.plan.command.commands.manage;
|
||||
|
||||
import com.djrapitops.javaplugin.command.CommandType;
|
||||
import com.djrapitops.javaplugin.command.SubCommand;
|
||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Arrays;
|
||||
import java.util.UUID;
|
||||
@ -13,7 +14,6 @@ import main.java.com.djrapitops.plan.utilities.MiscUtils;
|
||||
import main.java.com.djrapitops.plan.utilities.uuid.UUIDUtility;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
/**
|
||||
* This manage subcommand is used to remove a single player's data from the
|
||||
@ -45,7 +45,7 @@ public class ManageRemoveCommand extends SubCommand {
|
||||
|
||||
String playerName = MiscUtils.getPlayerName(args, sender, Permissions.MANAGE);
|
||||
|
||||
(new BukkitRunnable() {
|
||||
(new RslBukkitRunnable<Plan>("DBRemoveTask "+playerName) {
|
||||
@Override
|
||||
public void run() {
|
||||
UUID uuid;
|
||||
|
@ -2,6 +2,8 @@ package main.java.com.djrapitops.plan.command.commands.manage;
|
||||
|
||||
import com.djrapitops.javaplugin.command.CommandType;
|
||||
import com.djrapitops.javaplugin.command.SubCommand;
|
||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
||||
import com.djrapitops.javaplugin.task.RslTask;
|
||||
import java.io.File;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
@ -15,8 +17,6 @@ import main.java.com.djrapitops.plan.database.databases.SQLiteDB;
|
||||
import main.java.com.djrapitops.plan.utilities.ManageUtils;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
|
||||
/**
|
||||
* This manage subcommand is used to restore a backup.db file in the
|
||||
@ -71,7 +71,7 @@ public class ManageRestoreCommand extends SubCommand {
|
||||
return true;
|
||||
}
|
||||
final Database copyToDB = database;
|
||||
BukkitTask asyncRestoreTask = new BukkitRunnable() {
|
||||
RslTask asyncRestoreTask = new RslBukkitRunnable<Plan>("RestoreTask") {
|
||||
@Override
|
||||
public void run() {
|
||||
String backupDBName = args[0];
|
||||
@ -108,7 +108,7 @@ public class ManageRestoreCommand extends SubCommand {
|
||||
}
|
||||
this.cancel();
|
||||
}
|
||||
}.runTaskAsynchronously(plugin);
|
||||
}.runTaskAsynchronously();
|
||||
} catch (NullPointerException e) {
|
||||
sender.sendMessage(Phrase.MANAGE_DATABASE_FAILURE + "");
|
||||
}
|
||||
|
@ -1,5 +1,7 @@
|
||||
package main.java.com.djrapitops.plan.data.cache;
|
||||
|
||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
||||
import com.djrapitops.javaplugin.task.RslTask;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
@ -28,8 +30,6 @@ import main.java.com.djrapitops.plan.utilities.comparators.HandlingInfoTimeCompa
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||
|
||||
/**
|
||||
@ -136,7 +136,7 @@ public class DataCacheHandler extends LocationCache {
|
||||
} else {
|
||||
clearAfterXsaves = configValue;
|
||||
}
|
||||
BukkitTask asyncPeriodicCacheSaveTask = new BukkitRunnable() {
|
||||
RslTask asyncPeriodicCacheSaveTask = new RslBukkitRunnable<Plan>("PeriodicCacheSaveTask") {
|
||||
@Override
|
||||
public void run() {
|
||||
DataCacheHandler handler = Plan.getInstance().getHandler();
|
||||
@ -148,7 +148,7 @@ public class DataCacheHandler extends LocationCache {
|
||||
saveCommandUse();
|
||||
timesSaved++;
|
||||
}
|
||||
}.runTaskTimerAsynchronously(plugin, 60 * 20 * minutes, 60 * 20 * minutes);
|
||||
}.runTaskTimerAsynchronously(60 * 20 * minutes, 60 * 20 * minutes);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -359,7 +359,7 @@ public class DataCacheHandler extends LocationCache {
|
||||
if (data != null) {
|
||||
info.process(data);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
addToPool(info);
|
||||
}
|
||||
@ -470,7 +470,7 @@ public class DataCacheHandler extends LocationCache {
|
||||
* Calls all the methods that are ran when PlayerJoinEvent is fired
|
||||
*/
|
||||
public void handleReload() {
|
||||
BukkitTask asyncReloadCacheUpdateTask = (new BukkitRunnable() {
|
||||
RslTask asyncReloadCacheUpdateTask = (new RslBukkitRunnable<Plan>("ReloadCacheUpdateTask") {
|
||||
@Override
|
||||
public void run() {
|
||||
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||
@ -484,7 +484,7 @@ public class DataCacheHandler extends LocationCache {
|
||||
}
|
||||
this.cancel();
|
||||
}
|
||||
}).runTaskAsynchronously(plugin);
|
||||
}).runTaskAsynchronously();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,6 +1,8 @@
|
||||
package main.java.com.djrapitops.plan.data.cache.queue;
|
||||
|
||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
||||
import java.util.concurrent.BlockingQueue;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
|
||||
/**
|
||||
* Abstract class representing a queue consumer.
|
||||
@ -8,7 +10,7 @@ import java.util.concurrent.BlockingQueue;
|
||||
* @author Rsl1122
|
||||
* @param <T>
|
||||
*/
|
||||
public abstract class Consumer<T> implements Runnable {
|
||||
public abstract class Consumer<T> extends RslBukkitRunnable<Plan> {
|
||||
|
||||
boolean run;
|
||||
final BlockingQueue<T> queue;
|
||||
@ -17,8 +19,10 @@ public abstract class Consumer<T> implements Runnable {
|
||||
* Constructor, defines queue.
|
||||
*
|
||||
* @param queue Queue to consume from.
|
||||
* @param name Name of the queue.
|
||||
*/
|
||||
public Consumer(BlockingQueue<T> queue) {
|
||||
public Consumer(BlockingQueue<T> queue, String name) {
|
||||
super(name);
|
||||
this.queue = queue;
|
||||
run = true;
|
||||
}
|
||||
@ -35,6 +39,7 @@ public abstract class Consumer<T> implements Runnable {
|
||||
|
||||
void stop() {
|
||||
run = false;
|
||||
super.cancel();
|
||||
}
|
||||
|
||||
abstract void clearVariables();
|
||||
|
@ -63,7 +63,7 @@ class ClearConsumer extends Consumer<UUID> implements Runnable {
|
||||
private DataCacheHandler handler;
|
||||
|
||||
ClearConsumer(BlockingQueue q, DataCacheHandler handler) {
|
||||
super(q);
|
||||
super(q, "ClearQueueConsumer");
|
||||
this.handler = handler;
|
||||
}
|
||||
|
||||
|
@ -62,7 +62,7 @@ class GetConsumer extends Consumer<Map<UUID, List<DBCallableProcessor>>> {
|
||||
private Database db;
|
||||
|
||||
GetConsumer(BlockingQueue q, Database db) {
|
||||
super(q);
|
||||
super(q, "GetQueueConsumer");
|
||||
this.db = db;
|
||||
}
|
||||
|
||||
|
@ -75,7 +75,7 @@ class ProcessConsumer extends Consumer<HandlingInfo> {
|
||||
private DataCacheHandler handler;
|
||||
|
||||
ProcessConsumer(BlockingQueue q, DataCacheHandler h) {
|
||||
super(q);
|
||||
super(q, "ProcessQueueConsumer");
|
||||
handler = h;
|
||||
}
|
||||
|
||||
|
@ -94,7 +94,7 @@ class SaveConsumer extends Consumer<UserData> {
|
||||
private DataCacheClearQueue clear;
|
||||
|
||||
SaveConsumer(BlockingQueue q, DataCacheClearQueue clear, Database db) {
|
||||
super(q);
|
||||
super(q, "SaveQueueConsumer");
|
||||
this.db = db;
|
||||
this.clear = clear;
|
||||
run = true;
|
||||
|
@ -1,5 +1,8 @@
|
||||
package main.java.com.djrapitops.plan.data.cache.queue;
|
||||
|
||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
|
||||
/**
|
||||
* Abstract representation of a queue setup.
|
||||
*
|
||||
@ -21,7 +24,7 @@ public abstract class Setup<T> {
|
||||
|
||||
void go() {
|
||||
for (Consumer<T> consumer : consumers) {
|
||||
new Thread(consumer).start();
|
||||
consumer.runTaskAsynchronously();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,7 @@
|
||||
package main.java.com.djrapitops.plan.data.listeners;
|
||||
|
||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
||||
import com.djrapitops.javaplugin.task.RslTask;
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.Log;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
@ -17,8 +19,6 @@ import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.event.player.PlayerKickEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
|
||||
/**
|
||||
* Event Listener for PlayerJoin, PlayerQuit and PlayerKickEvents.
|
||||
@ -57,7 +57,7 @@ public class PlanPlayerListener implements Listener {
|
||||
UUID uuid = player.getUniqueId();
|
||||
handler.startSession(uuid);
|
||||
Log.debug(uuid + ": PlayerJoinEvent");
|
||||
BukkitTask asyncNewPlayerCheckTask = new BukkitRunnable() {
|
||||
RslTask asyncNewPlayerCheckTask = new RslBukkitRunnable<Plan>("NewPlayerCheckTask") {
|
||||
@Override
|
||||
public void run() {
|
||||
LoginInfo loginInfo = new LoginInfo(uuid, MiscUtils.getTime(), player.getAddress().getAddress(), player.isBanned(), player.getDisplayName(), player.getGameMode(), 1);
|
||||
@ -72,7 +72,7 @@ public class PlanPlayerListener implements Listener {
|
||||
Log.debug(uuid + ": PlayerJoinEvent_AsyncTask_END, New:" + isNewPlayer);
|
||||
this.cancel();
|
||||
}
|
||||
}.runTaskAsynchronously(plugin);
|
||||
}.runTaskAsynchronously();
|
||||
Log.debug(uuid + ": PlayerJoinEvent_END");
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
package main.java.com.djrapitops.plan.database.databases;
|
||||
|
||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
||||
import java.net.InetAddress;
|
||||
import java.sql.Connection;
|
||||
import java.sql.SQLException;
|
||||
@ -7,7 +8,6 @@ import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
@ -22,11 +22,8 @@ import main.java.com.djrapitops.plan.database.Database;
|
||||
import main.java.com.djrapitops.plan.database.tables.*;
|
||||
import main.java.com.djrapitops.plan.utilities.Benchmark;
|
||||
import main.java.com.djrapitops.plan.utilities.FormatUtils;
|
||||
import main.java.com.djrapitops.plan.utilities.ManageUtils;
|
||||
import main.java.com.djrapitops.plan.utilities.analysis.MathUtils;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
/**
|
||||
*
|
||||
@ -69,7 +66,7 @@ public abstract class SQLDB extends Database {
|
||||
*/
|
||||
public void startConnectionPingTask(Plan plugin) throws IllegalArgumentException, IllegalStateException {
|
||||
// Maintains Connection.
|
||||
new BukkitRunnable() {
|
||||
new RslBukkitRunnable<Plan>("DBConnectionPingTask "+getName()) {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
@ -80,7 +77,7 @@ public abstract class SQLDB extends Database {
|
||||
connection = getNewConnection();
|
||||
}
|
||||
}
|
||||
}.runTaskTimerAsynchronously(plugin, 60 * 20, 60 * 20);
|
||||
}.runTaskTimerAsynchronously(60 * 20, 60 * 20);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -150,7 +147,7 @@ public abstract class SQLDB extends Database {
|
||||
*
|
||||
*/
|
||||
public void convertBukkitDataToDB() {
|
||||
new BukkitRunnable() {
|
||||
new RslBukkitRunnable<Plan>("BukkitDataConversionTask") {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
@ -171,9 +168,11 @@ public abstract class SQLDB extends Database {
|
||||
Log.info("Conversion complete, took: " + FormatUtils.formatTimeAmount(Benchmark.stop("Convert Bukkitdata to DB data")) + " ms");
|
||||
} catch (SQLException ex) {
|
||||
Log.toLog(this.getClass().getName(), ex);
|
||||
} finally {
|
||||
this.cancel();
|
||||
}
|
||||
}
|
||||
}.runTaskAsynchronously(plugin);
|
||||
}.runTaskAsynchronously();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,5 +1,6 @@
|
||||
package main.java.com.djrapitops.plan.ui.webserver;
|
||||
|
||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
||||
import java.io.Closeable;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
@ -12,7 +13,6 @@ import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.Settings;
|
||||
import main.java.com.djrapitops.plan.ui.DataRequestHandler;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
/**
|
||||
*
|
||||
@ -60,7 +60,7 @@ public class WebSocketServer {
|
||||
System.exit(1);
|
||||
}
|
||||
//Run server in seperate thread
|
||||
(new BukkitRunnable() {
|
||||
(new RslBukkitRunnable<Plan>("WebServerTask") {
|
||||
@Override
|
||||
public void run() {
|
||||
while (!shutdown) {
|
||||
@ -92,7 +92,7 @@ public class WebSocketServer {
|
||||
}
|
||||
this.cancel();
|
||||
}
|
||||
}).runTaskAsynchronously(plugin);
|
||||
}).runTaskAsynchronously();
|
||||
|
||||
ENABLED = true;
|
||||
|
||||
|
@ -81,7 +81,7 @@ public class MiscUtils {
|
||||
List<OfflinePlayer> players = new ArrayList<>();
|
||||
players.addAll(Arrays.asList(Bukkit.getOfflinePlayers()));
|
||||
Set<OfflinePlayer> matches = new HashSet<>();
|
||||
players.parallelStream()
|
||||
players.stream()
|
||||
.filter(player -> (player.getName().toLowerCase().contains(search.toLowerCase())))
|
||||
.forEach(player -> {
|
||||
matches.add(player);
|
||||
|
@ -1,5 +1,7 @@
|
||||
package main.java.com.djrapitops.plan.utilities.analysis;
|
||||
|
||||
import com.djrapitops.javaplugin.task.RslBukkitRunnable;
|
||||
import com.djrapitops.javaplugin.task.RslTask;
|
||||
import main.java.com.djrapitops.plan.data.additional.HookHandler;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
@ -34,8 +36,6 @@ import main.java.com.djrapitops.plan.utilities.Benchmark;
|
||||
import main.java.com.djrapitops.plan.utilities.HtmlUtils;
|
||||
import main.java.com.djrapitops.plan.utilities.MiscUtils;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
|
||||
/**
|
||||
*
|
||||
@ -70,10 +70,10 @@ public class Analysis {
|
||||
if (isAnalysisBeingRun()) {
|
||||
return;
|
||||
}
|
||||
Benchmark.start("Analysis");
|
||||
plugin.processStatus().startExecution("Analysis");
|
||||
log(Phrase.ANALYSIS_START + "");
|
||||
// Async task for Analysis
|
||||
BukkitTask asyncAnalysisTask = (new BukkitRunnable() {
|
||||
RslTask asyncAnalysisTask = (new RslBukkitRunnable<Plan>("AnalysisTask") {
|
||||
@Override
|
||||
public void run() {
|
||||
taskId = this.getTaskId();
|
||||
@ -81,7 +81,7 @@ public class Analysis {
|
||||
taskId = -1;
|
||||
this.cancel();
|
||||
}
|
||||
}).runTaskAsynchronously(plugin);
|
||||
}).runTaskAsynchronously();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -95,6 +95,7 @@ public class Analysis {
|
||||
public boolean analyze(AnalysisCacheHandler analysisCache, Database db) {
|
||||
log(Phrase.ANALYSIS_FETCH_DATA + "");
|
||||
Benchmark.start("Analysis Fetch Phase");
|
||||
plugin.processStatus().setStatus("Analysis", "Analysis Fetch Phase");
|
||||
try {
|
||||
inspectCache.cacheAllUserData(db);
|
||||
} catch (Exception ex) {
|
||||
@ -106,7 +107,6 @@ public class Analysis {
|
||||
Log.info(Phrase.ANALYSIS_FAIL_NO_DATA + "");
|
||||
return false;
|
||||
}
|
||||
;
|
||||
return analyzeData(rawData, analysisCache);
|
||||
}
|
||||
|
||||
@ -117,64 +117,71 @@ public class Analysis {
|
||||
* @return
|
||||
*/
|
||||
public boolean analyzeData(List<UserData> rawData, AnalysisCacheHandler analysisCache) {
|
||||
Benchmark.start("Analysis Phase");
|
||||
Benchmark.start("Analysis UUID transform");
|
||||
List<UUID> uuids = rawData.stream().map(d -> d.getUuid()).collect(Collectors.toList());
|
||||
Benchmark.stop("Analysis UUID transform");
|
||||
Benchmark.start("Analysis Create Empty dataset");
|
||||
DataCacheHandler handler = plugin.getHandler();
|
||||
Map<UUID, SessionData> activeSessions = handler.getActiveSessions();
|
||||
long now = MiscUtils.getTime();
|
||||
rawData.stream().forEach((data) -> {
|
||||
SessionData session = activeSessions.get(data.getUuid());
|
||||
List<SessionData> sessions = data.getSessions();
|
||||
if (session != null && !sessions.contains(session)) {
|
||||
sessions.add(session);
|
||||
try {
|
||||
plugin.processStatus().setStatus("Analysis", "Analysis Phase");
|
||||
Benchmark.start("Analysis Phase");
|
||||
Benchmark.start("Analysis UUID transform");
|
||||
List<UUID> uuids = rawData.stream().map(d -> d.getUuid()).collect(Collectors.toList());
|
||||
Benchmark.stop("Analysis UUID transform");
|
||||
Benchmark.start("Analysis Create Empty dataset");
|
||||
DataCacheHandler handler = plugin.getHandler();
|
||||
Map<UUID, SessionData> activeSessions = handler.getActiveSessions();
|
||||
long now = MiscUtils.getTime();
|
||||
rawData.stream().forEach((data) -> {
|
||||
SessionData session = activeSessions.get(data.getUuid());
|
||||
List<SessionData> sessions = data.getSessions();
|
||||
if (session != null && !sessions.contains(session)) {
|
||||
sessions.add(session);
|
||||
}
|
||||
});
|
||||
Map<String, Integer> commandUse = handler.getCommandUse();
|
||||
|
||||
AnalysisData analysisData = new AnalysisData();
|
||||
Benchmark.stop("Analysis Create Empty dataset");
|
||||
log(Phrase.ANALYSIS_BEGIN_ANALYSIS.parse(rawData.size() + "", Benchmark.stop("Analysis Fetch Phase") + ""));
|
||||
String playersTable = SortablePlayersTableCreator.createSortablePlayersTable(rawData);
|
||||
analysisData.setSortablePlayersTable(playersTable);
|
||||
|
||||
RawAnalysisData sorted = fillDataset(commandUse, rawData, now);
|
||||
|
||||
// Analyze & Save RawAnalysisData to AnalysisData
|
||||
createCloroplethMap(analysisData, sorted.getGeolocations(), sorted.getGeocodes());
|
||||
createPlayerActivityGraphs(analysisData, sorted.getSessiondata(), sorted.getRegistered(), sorted.getSortedSessionData());
|
||||
analysisData.setRecentPlayers(RecentPlayersButtonsCreator.createRecentLoginsButtons(sorted.getLatestLogins(), 20));
|
||||
long totalPlaytime = sorted.getTotalPlaytime();
|
||||
analysisData.setTotalPlayTime(totalPlaytime);
|
||||
analysisData.setAveragePlayTime(totalPlaytime / rawData.size());
|
||||
analysisData.setSessionAverage(MathUtils.averageLong(AnalysisUtils.transformSessionDataToLengths(sorted.getSessiondata())));
|
||||
analysisData.setTotalLoginTimes(sorted.getTotalLoginTimes());
|
||||
createActivityVisalization(uuids.size(), sorted.getTotalBanned(), sorted.getActive(), sorted.getInactive(), sorted.getJoinleaver(), analysisData);
|
||||
analysisData.setOps(sorted.getOps());
|
||||
analyzeAverageAge(sorted.getAges(), analysisData);
|
||||
createGamemodeUsageVisualization(sorted.getGmZero(), sorted.getGmOne(), sorted.getGmTwo(), sorted.getGmThree(), analysisData);
|
||||
createCommandUseTable(sorted, analysisData);
|
||||
analysisData.setTotaldeaths(sorted.getTotalDeaths());
|
||||
analysisData.setTotalkills(sorted.getTotalKills());
|
||||
analysisData.setTotalmobkills(sorted.getTotalMobKills());
|
||||
analysisData.setRefreshDate(now);
|
||||
analysisData.setPunchCardData(PunchCardGraphCreator.generateDataArray(sorted.getSessiondata()));
|
||||
analysisData.setSessionDistributionData(SessionLengthDistributionGraphCreator.generateDataArraySessions(sorted.getSessiondata()));
|
||||
analysisData.setPlaytimeDistributionData(SessionLengthDistributionGraphCreator.generateDataArray(sorted.getPlaytimes().values()));
|
||||
Benchmark.stop("Analysis Phase");
|
||||
log(Phrase.ANALYSIS_THIRD_PARTY + "");
|
||||
plugin.processStatus().setStatus("Analysis", "Analyzing additional data sources (3rd party)");
|
||||
analysisData.setAdditionalDataReplaceMap(analyzeAdditionalPluginData(uuids));
|
||||
|
||||
analysisCache.cache(analysisData);
|
||||
long time = plugin.processStatus().finishExecution("Analysis");
|
||||
if (Settings.ANALYSIS_LOG_FINISHED.isTrue()) {
|
||||
Log.info(Phrase.ANALYSIS_COMPLETE.parse(time + "", HtmlUtils.getServerAnalysisUrlWithProtocol()));
|
||||
}
|
||||
});
|
||||
Map<String, Integer> commandUse = handler.getCommandUse();
|
||||
|
||||
AnalysisData analysisData = new AnalysisData();
|
||||
Benchmark.stop("Analysis Create Empty dataset");
|
||||
log(Phrase.ANALYSIS_BEGIN_ANALYSIS.parse(rawData.size() + "", Benchmark.stop("Analysis Fetch Phase") + ""));
|
||||
String playersTable = SortablePlayersTableCreator.createSortablePlayersTable(rawData);
|
||||
analysisData.setSortablePlayersTable(playersTable);
|
||||
|
||||
RawAnalysisData sorted = fillDataset(commandUse, rawData, now);
|
||||
|
||||
// Analyze & Save RawAnalysisData to AnalysisData
|
||||
createCloroplethMap(analysisData, sorted.getGeolocations(), sorted.getGeocodes());
|
||||
createPlayerActivityGraphs(analysisData, sorted.getSessiondata(), sorted.getRegistered(), sorted.getSortedSessionData());
|
||||
analysisData.setRecentPlayers(RecentPlayersButtonsCreator.createRecentLoginsButtons(sorted.getLatestLogins(), 20));
|
||||
long totalPlaytime = sorted.getTotalPlaytime();
|
||||
analysisData.setTotalPlayTime(totalPlaytime);
|
||||
analysisData.setAveragePlayTime(totalPlaytime / rawData.size());
|
||||
analysisData.setSessionAverage(MathUtils.averageLong(AnalysisUtils.transformSessionDataToLengths(sorted.getSessiondata())));
|
||||
analysisData.setTotalLoginTimes(sorted.getTotalLoginTimes());
|
||||
createActivityVisalization(uuids.size(), sorted.getTotalBanned(), sorted.getActive(), sorted.getInactive(), sorted.getJoinleaver(), analysisData);
|
||||
analysisData.setOps(sorted.getOps());
|
||||
analyzeAverageAge(sorted.getAges(), analysisData);
|
||||
createGamemodeUsageVisualization(sorted.getGmZero(), sorted.getGmOne(), sorted.getGmTwo(), sorted.getGmThree(), analysisData);
|
||||
createCommandUseTable(sorted, analysisData);
|
||||
analysisData.setTotaldeaths(sorted.getTotalDeaths());
|
||||
analysisData.setTotalkills(sorted.getTotalKills());
|
||||
analysisData.setTotalmobkills(sorted.getTotalMobKills());
|
||||
analysisData.setRefreshDate(now);
|
||||
analysisData.setPunchCardData(PunchCardGraphCreator.generateDataArray(sorted.getSessiondata()));
|
||||
analysisData.setSessionDistributionData(SessionLengthDistributionGraphCreator.generateDataArraySessions(sorted.getSessiondata()));
|
||||
analysisData.setPlaytimeDistributionData(SessionLengthDistributionGraphCreator.generateDataArray(sorted.getPlaytimes().values()));
|
||||
Benchmark.stop("Analysis Phase");
|
||||
log(Phrase.ANALYSIS_THIRD_PARTY + "");
|
||||
analysisData.setAdditionalDataReplaceMap(analyzeAdditionalPluginData(uuids));
|
||||
|
||||
analysisCache.cache(analysisData);
|
||||
long time = Benchmark.stop("Analysis");
|
||||
if (Settings.ANALYSIS_LOG_FINISHED.isTrue()) {
|
||||
Log.info(Phrase.ANALYSIS_COMPLETE.parse(time + "", HtmlUtils.getServerAnalysisUrlWithProtocol()));
|
||||
}
|
||||
// LocationAnalysis.performAnalysis(analysisData, plugin.getDB());
|
||||
ExportUtility.export(plugin, analysisData, rawData);
|
||||
|
||||
ExportUtility.export(plugin, analysisData, rawData);
|
||||
} catch (Throwable e) {
|
||||
Log.toLog(this.getClass().getName(), e);
|
||||
plugin.processStatus().setStatus("Analysis", "Error: " + e);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -420,7 +427,7 @@ public class Analysis {
|
||||
Benchmark.stop("Analysis 3rd party");
|
||||
return replaceMap;
|
||||
}
|
||||
|
||||
|
||||
public boolean isAnalysisBeingRun() {
|
||||
return taskId != -1;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user