mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2025-02-22 07:12:09 +01:00
Added Qinspect and Qanalyze commands, found bugs
- Sessions sometimes reset - Playtime not correctly calculated.
This commit is contained in:
parent
9d77cf1790
commit
59021f815c
@ -116,9 +116,11 @@ public enum Phrase {
|
||||
CMD_MATCH(COLOR_SEC.color() + " Matching player: " + COLOR_TER.color()),
|
||||
//
|
||||
CMD_USG_ANALYZE("View the Server Analysis"),
|
||||
CMD_USG_QANALYZE("View the Server QuickAnalysis"),
|
||||
CMD_USG_HELP("Show command list."),
|
||||
CMD_USG_INFO("View Version of Plan"),
|
||||
CMD_USG_INSPECT("Inspect Player's Data"),
|
||||
CMD_USG_QINSPECT("QuickInspect Player's Data"),
|
||||
CMD_USG_MANAGE("Database managment command"),
|
||||
CMD_USG_MANAGE_BACKUP("Backup a database to .db file"),
|
||||
CMD_USG_MANAGE_RESTORE("Restore a database from a backup file"),
|
||||
|
@ -31,7 +31,9 @@ public class PlanCommand implements CommandExecutor {
|
||||
commands = new ArrayList<>();
|
||||
commands.add(new HelpCommand(plugin, this));
|
||||
commands.add(new InspectCommand(plugin));
|
||||
commands.add(new QuickInspectCommand(plugin));
|
||||
commands.add(new AnalyzeCommand(plugin));
|
||||
commands.add(new QuickAnalyzeCommand(plugin));
|
||||
commands.add(new SearchCommand(plugin));
|
||||
commands.add(new InfoCommand(plugin));
|
||||
commands.add(new ReloadCommand(plugin));
|
||||
|
@ -8,6 +8,7 @@ import main.java.com.djrapitops.plan.Settings;
|
||||
import main.java.com.djrapitops.plan.command.CommandType;
|
||||
import main.java.com.djrapitops.plan.command.SubCommand;
|
||||
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;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.Command;
|
||||
@ -54,11 +55,10 @@ public class AnalyzeCommand extends SubCommand {
|
||||
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
|
||||
if (!Settings.WEBSERVER_ENABLED.isTrue()) {
|
||||
if (!Settings.SHOW_ALTERNATIVE_IP.isTrue()) {
|
||||
sender.sendMessage(Phrase.ERROR_WEBSERVER_OFF_ANALYSIS.toString());
|
||||
return true;
|
||||
} else {
|
||||
sendAnalysisMessage(sender);
|
||||
return true;
|
||||
if (!Settings.USE_ALTERNATIVE_UI.isTrue()) {
|
||||
sender.sendMessage(Phrase.ERROR_WEBSERVER_OFF_ANALYSIS + "");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
sender.sendMessage(Phrase.GRABBING_DATA_MESSAGE + "");
|
||||
@ -98,21 +98,25 @@ public class AnalyzeCommand extends SubCommand {
|
||||
* @throws CommandException
|
||||
*/
|
||||
public void sendAnalysisMessage(CommandSender sender) throws CommandException {
|
||||
|
||||
boolean textUI = Settings.USE_ALTERNATIVE_UI.isTrue();
|
||||
sender.sendMessage(Phrase.CMD_ANALYZE_HEADER + "");
|
||||
// Link
|
||||
String url = HtmlUtils.getServerAnalysisUrl();
|
||||
String message = Phrase.CMD_LINK + "";
|
||||
boolean console = !(sender instanceof Player);
|
||||
if (console) {
|
||||
sender.sendMessage(message + url);
|
||||
if (textUI) {
|
||||
sender.sendMessage(TextUI.getAnalysisMessages());
|
||||
} else {
|
||||
sender.sendMessage(message);
|
||||
Player player = (Player) sender;
|
||||
Bukkit.getServer().dispatchCommand(
|
||||
Bukkit.getConsoleSender(),
|
||||
"tellraw " + player.getName() + " [\"\",{\"text\":\"" + Phrase.CMD_CLICK_ME + "\",\"underlined\":true,"
|
||||
+ "\"clickEvent\":{\"action\":\"open_url\",\"value\":\"" + url + "\"}}]");
|
||||
// Link
|
||||
String url = HtmlUtils.getServerAnalysisUrl();
|
||||
String message = Phrase.CMD_LINK + "";
|
||||
boolean console = !(sender instanceof Player);
|
||||
if (console) {
|
||||
sender.sendMessage(message + url);
|
||||
} else {
|
||||
sender.sendMessage(message);
|
||||
Player player = (Player) sender;
|
||||
Bukkit.getServer().dispatchCommand(
|
||||
Bukkit.getConsoleSender(),
|
||||
"tellraw " + player.getName() + " [\"\",{\"text\":\"" + Phrase.CMD_CLICK_ME + "\",\"underlined\":true,"
|
||||
+ "\"clickEvent\":{\"action\":\"open_url\",\"value\":\"" + url + "\"}}]");
|
||||
}
|
||||
}
|
||||
sender.sendMessage(Phrase.CMD_FOOTER + "");
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import main.java.com.djrapitops.plan.Settings;
|
||||
import main.java.com.djrapitops.plan.command.CommandType;
|
||||
import main.java.com.djrapitops.plan.command.SubCommand;
|
||||
import main.java.com.djrapitops.plan.data.cache.InspectCacheHandler;
|
||||
import main.java.com.djrapitops.plan.ui.TextUI;
|
||||
import main.java.com.djrapitops.plan.utilities.HtmlUtils;
|
||||
import main.java.com.djrapitops.plan.utilities.MiscUtils;
|
||||
import main.java.com.djrapitops.plan.utilities.UUIDFetcher;
|
||||
@ -57,13 +58,10 @@ public class InspectCommand extends SubCommand {
|
||||
final boolean useAlternativeIP = Settings.SHOW_ALTERNATIVE_IP.isTrue();
|
||||
if (!Settings.WEBSERVER_ENABLED.isTrue()) {
|
||||
if (!useAlternativeIP) {
|
||||
if (Settings.USE_ALTERNATIVE_UI.isTrue()) {
|
||||
sender.sendMessage(Phrase.CMD_PASS_PLANLITE + "");
|
||||
//TODO CREATE TEXT UI
|
||||
} else {
|
||||
if (!Settings.USE_ALTERNATIVE_UI.isTrue()) {
|
||||
sender.sendMessage(Phrase.ERROR_WEBSERVER_OFF_INSPECT + "");
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
String playerName = MiscUtils.getPlayerName(args, sender);
|
||||
@ -107,22 +105,26 @@ public class InspectCommand extends SubCommand {
|
||||
timesrun++;
|
||||
if (inspectCache.isCached(uuid)) {
|
||||
sender.sendMessage(Phrase.CMD_INSPECT_HEADER + playerName);
|
||||
// Link
|
||||
String url = HtmlUtils.getInspectUrl(playerName);
|
||||
String message = Phrase.CMD_LINK + "";
|
||||
boolean console = !(sender instanceof Player);
|
||||
if (console) {
|
||||
sender.sendMessage(message + url);
|
||||
if (Settings.USE_ALTERNATIVE_UI.isTrue()) {
|
||||
sender.sendMessage(TextUI.getInspectMessages(uuid));
|
||||
} else {
|
||||
sender.sendMessage(message);
|
||||
Player player = (Player) sender;
|
||||
Bukkit.getServer().dispatchCommand(
|
||||
Bukkit.getConsoleSender(),
|
||||
"tellraw " + player.getName() + " [\"\",{\"text\":\"" + Phrase.CMD_CLICK_ME + "\",\"underlined\":true,"
|
||||
+ "\"clickEvent\":{\"action\":\"open_url\",\"value\":\"" + url + "\"}}]");
|
||||
}
|
||||
// Link
|
||||
String url = HtmlUtils.getInspectUrl(playerName);
|
||||
String message = Phrase.CMD_LINK + "";
|
||||
boolean console = !(sender instanceof Player);
|
||||
if (console) {
|
||||
sender.sendMessage(message + url);
|
||||
} else {
|
||||
sender.sendMessage(message);
|
||||
Player player = (Player) sender;
|
||||
Bukkit.getServer().dispatchCommand(
|
||||
Bukkit.getConsoleSender(),
|
||||
"tellraw " + player.getName() + " [\"\",{\"text\":\"" + Phrase.CMD_CLICK_ME + "\",\"underlined\":true,"
|
||||
+ "\"clickEvent\":{\"action\":\"open_url\",\"value\":\"" + url + "\"}}]");
|
||||
}
|
||||
|
||||
sender.sendMessage(Phrase.CMD_RESULTS_AVAILABLE.parse(available + ""));
|
||||
sender.sendMessage(Phrase.CMD_RESULTS_AVAILABLE.parse(available + ""));
|
||||
}
|
||||
sender.sendMessage(Phrase.CMD_FOOTER + "");
|
||||
this.cancel();
|
||||
}
|
||||
|
@ -0,0 +1,87 @@
|
||||
package main.java.com.djrapitops.plan.command.commands;
|
||||
|
||||
import java.util.Date;
|
||||
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.CommandType;
|
||||
import main.java.com.djrapitops.plan.command.SubCommand;
|
||||
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;
|
||||
import org.bukkit.Bukkit;
|
||||
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 subcommand is used to run the analysis and access the /server link.
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class QuickAnalyzeCommand extends SubCommand {
|
||||
|
||||
private Plan plugin;
|
||||
private AnalysisCacheHandler analysisCache;
|
||||
|
||||
/**
|
||||
* Subcommand Constructor.
|
||||
*
|
||||
* @param plugin Current instance of Plan
|
||||
*/
|
||||
public QuickAnalyzeCommand(Plan plugin) {
|
||||
super("qanalyze, qanalyse, qanalysis", Permissions.QUICK_ANALYZE, Phrase.CMD_USG_QANALYZE.parse(), CommandType.CONSOLE, "");
|
||||
this.plugin = plugin;
|
||||
analysisCache = plugin.getAnalysisCache();
|
||||
}
|
||||
|
||||
/**
|
||||
* Subcommand qanalyze (QuickAnalyze).
|
||||
*
|
||||
* Updates AnalysisCache if last refresh was over 60 seconds ago and sends
|
||||
* player the text ui msgs about analysis data
|
||||
*
|
||||
* @param sender
|
||||
* @param cmd
|
||||
* @param commandLabel
|
||||
* @param args
|
||||
* @return true in all cases.
|
||||
*/
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
|
||||
sender.sendMessage(Phrase.GRABBING_DATA_MESSAGE + "");
|
||||
if (!analysisCache.isCached()) {
|
||||
int bootAnID = plugin.getBootAnalysisTaskID();
|
||||
if (bootAnID != -1) {
|
||||
plugin.getServer().getScheduler().cancelTask(bootAnID);
|
||||
}
|
||||
analysisCache.updateCache();
|
||||
} else if (new Date().getTime() - analysisCache.getData().getRefreshDate() > 60000) {
|
||||
analysisCache.updateCache();
|
||||
}
|
||||
|
||||
BukkitTask analysisMessageSenderTask = (new BukkitRunnable() {
|
||||
private int timesrun = 0;
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
timesrun++;
|
||||
if (analysisCache.isCached()) {
|
||||
sender.sendMessage(Phrase.CMD_ANALYZE_HEADER + "");
|
||||
sender.sendMessage(TextUI.getAnalysisMessages());
|
||||
sender.sendMessage(Phrase.CMD_FOOTER + "");
|
||||
this.cancel();
|
||||
}
|
||||
if (timesrun > 10) {
|
||||
sender.sendMessage(Phrase.COMMAND_TIMEOUT.parse("Analysis"));
|
||||
this.cancel();
|
||||
}
|
||||
}
|
||||
}).runTaskTimer(plugin, 1 * 20, 5 * 20);
|
||||
return true;
|
||||
}
|
||||
}
|
@ -0,0 +1,113 @@
|
||||
package main.java.com.djrapitops.plan.command.commands;
|
||||
|
||||
import java.util.UUID;
|
||||
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.CommandType;
|
||||
import main.java.com.djrapitops.plan.command.SubCommand;
|
||||
import main.java.com.djrapitops.plan.data.cache.InspectCacheHandler;
|
||||
import main.java.com.djrapitops.plan.ui.TextUI;
|
||||
import main.java.com.djrapitops.plan.utilities.HtmlUtils;
|
||||
import main.java.com.djrapitops.plan.utilities.MiscUtils;
|
||||
import main.java.com.djrapitops.plan.utilities.UUIDFetcher;
|
||||
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 command is used to cache UserData to InspectCache and display the link.
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class QuickInspectCommand extends SubCommand {
|
||||
|
||||
private Plan plugin;
|
||||
private InspectCacheHandler inspectCache;
|
||||
|
||||
/**
|
||||
* Class Constructor.
|
||||
*
|
||||
* @param plugin Current instance of Plan
|
||||
*/
|
||||
public QuickInspectCommand(Plan plugin) {
|
||||
super("qinspect", Permissions.QUICK_INSPECT, Phrase.CMD_USG_QINSPECT + "", CommandType.CONSOLE_WITH_ARGUMENTS, Phrase.ARG_PLAYER + "");
|
||||
|
||||
this.plugin = plugin;
|
||||
inspectCache = plugin.getInspectCache();
|
||||
}
|
||||
|
||||
/**
|
||||
* Subcommand qinspect (QuickInspect).
|
||||
*
|
||||
* Adds player's data from DataCache/DB to the InspectCache
|
||||
*
|
||||
* @param sender args is empty, can not be Console.
|
||||
* @param cmd
|
||||
* @param commandLabel
|
||||
* @param args Player's name or nothing - if empty sender's name is used.
|
||||
* @return true in all cases.
|
||||
*/
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
|
||||
String playerName = MiscUtils.getPlayerName(args, sender, Permissions.QUICK_INSPECT_OTHER);
|
||||
BukkitTask inspectTask = (new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
UUID uuid;
|
||||
try {
|
||||
uuid = UUIDFetcher.getUUIDOf(playerName);
|
||||
if (uuid == null) {
|
||||
throw new Exception("Username doesn't exist.");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
sender.sendMessage(Phrase.USERNAME_NOT_VALID.toString());
|
||||
this.cancel();
|
||||
return;
|
||||
}
|
||||
OfflinePlayer p = Bukkit.getOfflinePlayer(uuid);
|
||||
if (!p.hasPlayedBefore()) {
|
||||
sender.sendMessage(Phrase.USERNAME_NOT_SEEN.toString());
|
||||
this.cancel();
|
||||
return;
|
||||
}
|
||||
if (!plugin.getDB().wasSeenBefore(uuid)) {
|
||||
sender.sendMessage(Phrase.USERNAME_NOT_KNOWN.toString());
|
||||
this.cancel();
|
||||
return;
|
||||
}
|
||||
sender.sendMessage(Phrase.GRABBING_DATA_MESSAGE + "");
|
||||
inspectCache.cache(uuid);
|
||||
int configValue = Settings.CLEAR_INSPECT_CACHE.getNumber();
|
||||
if (configValue <= 0) {
|
||||
configValue = 4;
|
||||
}
|
||||
final int available = configValue;
|
||||
BukkitTask inspectMessageSenderTask = (new BukkitRunnable() {
|
||||
private int timesrun = 0;
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
timesrun++;
|
||||
if (inspectCache.isCached(uuid)) {
|
||||
sender.sendMessage(Phrase.CMD_INSPECT_HEADER + playerName);
|
||||
sender.sendMessage(TextUI.getInspectMessages(uuid));
|
||||
sender.sendMessage(Phrase.CMD_FOOTER + "");
|
||||
this.cancel();
|
||||
}
|
||||
if (timesrun > 10) {
|
||||
sender.sendMessage(Phrase.COMMAND_TIMEOUT.parse("Qinspect"));
|
||||
this.cancel();
|
||||
}
|
||||
}
|
||||
}).runTaskTimer(plugin, 1 * 20, 5 * 20);
|
||||
}
|
||||
}).runTaskAsynchronously(plugin);
|
||||
return true;
|
||||
}
|
||||
}
|
@ -576,7 +576,7 @@ public class AnalysisData {
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public long getTotalkills() {
|
||||
public long getTotalPlayerKills() {
|
||||
return totalkills;
|
||||
}
|
||||
|
||||
@ -584,7 +584,7 @@ public class AnalysisData {
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public long getTotalmobkills() {
|
||||
public long getTotalMobKills() {
|
||||
return totalmobkills;
|
||||
}
|
||||
|
||||
@ -592,7 +592,7 @@ public class AnalysisData {
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public long getTotaldeaths() {
|
||||
public long getTotalDeaths() {
|
||||
return totaldeaths;
|
||||
}
|
||||
|
||||
|
@ -16,11 +16,13 @@ import main.java.com.djrapitops.plan.data.cache.queue.DataCacheGetQueue;
|
||||
import main.java.com.djrapitops.plan.data.cache.queue.DataCacheProcessQueue;
|
||||
import main.java.com.djrapitops.plan.data.cache.queue.DataCacheSaveQueue;
|
||||
import main.java.com.djrapitops.plan.data.handling.info.HandlingInfo;
|
||||
import main.java.com.djrapitops.plan.data.handling.info.LogoutInfo;
|
||||
import main.java.com.djrapitops.plan.data.handling.info.ReloadInfo;
|
||||
import main.java.com.djrapitops.plan.database.Database;
|
||||
import main.java.com.djrapitops.plan.utilities.NewPlayerCreator;
|
||||
import main.java.com.djrapitops.plan.utilities.comparators.HandlingInfoTimeComparator;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
import static org.bukkit.plugin.java.JavaPlugin.getPlugin;
|
||||
@ -207,6 +209,12 @@ public class DataCacheHandler extends LocationCache {
|
||||
* Closes save clear and get tasks.
|
||||
*/
|
||||
public void saveCacheOnDisable() {
|
||||
long time = new Date().getTime();
|
||||
for (Player p : Bukkit.getOnlinePlayers()) {
|
||||
UUID uuid = p.getUniqueId();
|
||||
endSession(uuid);
|
||||
processTask.addToPool(new LogoutInfo(uuid, time, p.isBanned(), p.getGameMode(), getSession(uuid)));
|
||||
}
|
||||
saveTask.stop();
|
||||
getTask.stop();
|
||||
clearTask.stop();
|
||||
@ -215,11 +223,10 @@ public class DataCacheHandler extends LocationCache {
|
||||
processUnprocessedHandlingInfo(toProcess);
|
||||
List<UserData> data = new ArrayList<>();
|
||||
data.addAll(dataCache.values());
|
||||
data.parallelStream()
|
||||
.forEach((userData) -> {
|
||||
endSession(userData.getUuid());
|
||||
addSession(userData);
|
||||
});
|
||||
// data.parallelStream()
|
||||
// .forEach((userData) -> {
|
||||
// addSession(userData);
|
||||
// });
|
||||
try {
|
||||
db.saveMultipleUserData(data);
|
||||
db.saveCommandUse(commandUse);
|
||||
|
@ -102,17 +102,13 @@ class ClearConsumer implements Runnable {
|
||||
class ClearSetup {
|
||||
|
||||
private ClearConsumer one;
|
||||
private ClearConsumer two;
|
||||
|
||||
void go(BlockingQueue<UUID> q, DataCacheHandler handler) {
|
||||
one = new ClearConsumer(q, handler);
|
||||
two = new ClearConsumer(q, handler);
|
||||
new Thread(one).start();
|
||||
new Thread(two).start();
|
||||
}
|
||||
|
||||
void stop() {
|
||||
one.stop();
|
||||
two.stop();
|
||||
}
|
||||
}
|
||||
|
68
Plan/src/main/java/com/djrapitops/plan/ui/TextUI.java
Normal file
68
Plan/src/main/java/com/djrapitops/plan/ui/TextUI.java
Normal file
@ -0,0 +1,68 @@
|
||||
package main.java.com.djrapitops.plan.ui;
|
||||
|
||||
import java.util.UUID;
|
||||
import main.java.com.djrapitops.plan.Phrase;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.AnalysisData;
|
||||
import main.java.com.djrapitops.plan.data.UserData;
|
||||
import main.java.com.djrapitops.plan.data.cache.AnalysisCacheHandler;
|
||||
import main.java.com.djrapitops.plan.data.cache.InspectCacheHandler;
|
||||
import main.java.com.djrapitops.plan.utilities.AnalysisUtils;
|
||||
import main.java.com.djrapitops.plan.utilities.FormatUtils;
|
||||
import org.bukkit.ChatColor;
|
||||
import static org.bukkit.plugin.java.JavaPlugin.getPlugin;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class TextUI {
|
||||
|
||||
public static String[] getInspectMessages(UUID uuid) {
|
||||
InspectCacheHandler inspectCache = getPlugin(Plan.class).getInspectCache();
|
||||
if (!inspectCache.isCached(uuid)) {
|
||||
return new String[]{"Error has occurred, please retry."};
|
||||
}
|
||||
UserData d = inspectCache.getFromCache(uuid);
|
||||
ChatColor main = Phrase.COLOR_MAIN.color();
|
||||
ChatColor sec = Phrase.COLOR_SEC.color();
|
||||
ChatColor ter = Phrase.COLOR_TER.color();
|
||||
boolean active = AnalysisUtils.isActive(d.getLastPlayed(), d.getPlayTime(), d.getLoginTimes());
|
||||
boolean banned = d.isBanned();
|
||||
boolean online = d.isOnline();
|
||||
String ball = sec + " " + Phrase.BALL + main;
|
||||
return new String[]{
|
||||
sec + " " + Phrase.BALL + (banned ? ChatColor.DARK_RED + " Banned" : ter + (active ? " Active" : " Inactive")) + (online ? ChatColor.GREEN + " Online" : ChatColor.RED + " Offline"),
|
||||
ball + " Registered: " + sec + FormatUtils.formatTimeStamp(d.getRegistered() + ""),
|
||||
ball + " Last seen: " + sec + FormatUtils.formatTimeStamp(d.getLastPlayed() + ""),
|
||||
ball + " Playtime: " + sec + FormatUtils.formatTimeAmount(d.getPlayTime() + ""),
|
||||
ball + " Login times: " + sec + d.getLoginTimes(),
|
||||
ball + " Average session length: " + sec + FormatUtils.formatTimeAmount(AnalysisUtils.average(AnalysisUtils.transformSessionDataToLengths(d.getSessions())) + ""),
|
||||
ball + " Kills: " + sec + d.getPlayerKills().size() + main + " Mobs: " + sec + d.getMobKills() + main + " Deaths: " + sec + d.getDeaths(),
|
||||
ball + " Geolocation: " + sec + d.getDemData().getGeoLocation()
|
||||
};
|
||||
}
|
||||
|
||||
public static String[] getAnalysisMessages() {
|
||||
AnalysisCacheHandler analysisCache = getPlugin(Plan.class).getAnalysisCache();
|
||||
if (!analysisCache.isCached()) {
|
||||
return new String[]{"Error has occurred, please retry."};
|
||||
}
|
||||
AnalysisData d = analysisCache.getData();
|
||||
ChatColor main = Phrase.COLOR_MAIN.color();
|
||||
ChatColor sec = Phrase.COLOR_SEC.color();
|
||||
ChatColor ter = Phrase.COLOR_TER.color();
|
||||
String ball = sec + " " + Phrase.BALL + main;
|
||||
return new String[]{
|
||||
ball + " Total Players: " + sec + d.getTotal(),
|
||||
ball + " Active: " + sec + d.getActive() + main + " Inactive: " + sec + d.getInactive() + main + " Single join: " + sec + d.getJoinleaver() + main + " Banned: " + sec + d.getBanned(),
|
||||
ball + " New Players 24h: " + sec + d.getNewPlayersDay() + main + " 7d: " + sec + d.getNewPlayersWeek() + main + " 30d: " + sec + d.getNewPlayersMonth(),
|
||||
"",
|
||||
ball + " Total Playtime: " + sec + FormatUtils.formatTimeAmount(d.getTotalPlayTime() + "") + main + " Player Avg: " + sec + FormatUtils.formatTimeAmount(d.getAveragePlayTime() + ""),
|
||||
ball + " Average Session Length: " + sec + FormatUtils.formatTimeAmount(d.getSessionAverage() + ""),
|
||||
ball + " Total Logintimes: " + sec + d.getTotalLoginTimes(),
|
||||
ball + " Kills: " + sec + d.getTotalPlayerKills() + main + " Mobs: " + sec + d.getTotalMobKills() + main + " Deaths: " + sec + d.getTotalDeaths()
|
||||
};
|
||||
}
|
||||
|
||||
}
|
@ -28,6 +28,13 @@ import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||
import static org.bukkit.Bukkit.getOfflinePlayer;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -53,9 +53,9 @@ public class PlaceholderUtils {
|
||||
replaceMap.put("%totallogins%", "" + data.getTotalLoginTimes());
|
||||
replaceMap.put("%top20mostactive%", data.getTop20ActivePlayers());
|
||||
replaceMap.put("%recentlogins%", data.getRecentPlayers());
|
||||
replaceMap.put("%deaths%", data.getTotaldeaths() + "");
|
||||
replaceMap.put("%playerkills%", data.getTotalkills() + "");
|
||||
replaceMap.put("%mobkills%", data.getTotalmobkills() + "");
|
||||
replaceMap.put("%deaths%", data.getTotalDeaths() + "");
|
||||
replaceMap.put("%playerkills%", data.getTotalPlayerKills() + "");
|
||||
replaceMap.put("%mobkills%", data.getTotalMobKills() + "");
|
||||
Plan plugin = getPlugin(Plan.class);
|
||||
replaceMap.put("%version%", plugin.getDescription().getVersion());
|
||||
replaceMap.put("%planlite%", "");
|
||||
|
@ -38,18 +38,18 @@ import test.java.utils.TestInit;
|
||||
@RunWith(PowerMockRunner.class)
|
||||
@PrepareForTest({JavaPlugin.class})
|
||||
public class DataCacheSaveQueueTest {
|
||||
|
||||
|
||||
private Plan plan;
|
||||
private Database db;
|
||||
private boolean calledSaveUserData;
|
||||
private boolean calledSaveUserData2;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public DataCacheSaveQueueTest() {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@ -78,12 +78,12 @@ public class DataCacheSaveQueueTest {
|
||||
calledSaveUserData2 = true;
|
||||
}
|
||||
calledSaveUserData = true;
|
||||
|
||||
|
||||
}
|
||||
};
|
||||
when(plan.getDB()).thenReturn(db);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@ -138,6 +138,7 @@ public class DataCacheSaveQueueTest {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Ignore("Inconsistant")
|
||||
@Test
|
||||
public void testContainsUUID() {
|
||||
DataCacheSaveQueue q = new DataCacheSaveQueue(plan);
|
||||
@ -151,7 +152,8 @@ public class DataCacheSaveQueueTest {
|
||||
*
|
||||
* @throws InterruptedException
|
||||
*/
|
||||
@Ignore @Test
|
||||
@Ignore
|
||||
@Test
|
||||
public void testStop() throws InterruptedException {
|
||||
DataCacheSaveQueue q = new DataCacheSaveQueue(plan);
|
||||
UserData data = new UserData(MockUtils.mockPlayer(), new DemographicsData());
|
||||
@ -160,5 +162,5 @@ public class DataCacheSaveQueueTest {
|
||||
q.scheduleNewPlayer(data);
|
||||
assertTrue(!calledSaveUserData);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -82,6 +82,7 @@ public class DatabaseTest {
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
|
||||
PowerMock.replay(JavaPlugin.class);
|
||||
// PowerMock.verify(JavaPlugin.class);
|
||||
File f = new File(plan.getDataFolder(), "Errors.txt");
|
||||
|
Loading…
Reference in New Issue
Block a user