mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2025-02-04 22:41:41 +01:00
This commit is contained in:
parent
a34170b6c9
commit
844d567243
@ -79,18 +79,20 @@ public class AnalyzeCommand extends SubCommand {
|
|||||||
}
|
}
|
||||||
}).runTaskAsynchronously();
|
}).runTaskAsynchronously();
|
||||||
}
|
}
|
||||||
updateCache();
|
updateCache(sender);
|
||||||
runMessageSenderTask(sender);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateCache() {
|
private void updateCache(ISender sender) {
|
||||||
if (!analysisCache.isCached() || MiscUtils.getTime() - analysisCache.getData().getRefreshDate() > TimeAmount.MINUTE.ms()) {
|
if (!analysisCache.isCached() || MiscUtils.getTime() - analysisCache.getData().getRefreshDate() > TimeAmount.MINUTE.ms()) {
|
||||||
int bootAnID = plugin.getBootAnalysisTaskID();
|
int bootAnID = plugin.getBootAnalysisTaskID();
|
||||||
if (bootAnID != -1) {
|
if (bootAnID != -1) {
|
||||||
plugin.getServer().getScheduler().cancelTask(bootAnID);
|
plugin.getServer().getScheduler().cancelTask(bootAnID);
|
||||||
}
|
}
|
||||||
|
analysisCache.addNotification(sender);
|
||||||
analysisCache.updateCache();
|
analysisCache.updateCache();
|
||||||
|
} else {
|
||||||
|
analysisCache.sendAnalysisMessage(sender);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,9 +1,22 @@
|
|||||||
package main.java.com.djrapitops.plan.data.cache;
|
package main.java.com.djrapitops.plan.data.cache;
|
||||||
|
|
||||||
|
import com.djrapitops.plugin.command.CommandUtils;
|
||||||
|
import com.djrapitops.plugin.command.ISender;
|
||||||
|
import com.djrapitops.plugin.utilities.player.IPlayer;
|
||||||
import main.java.com.djrapitops.plan.Plan;
|
import main.java.com.djrapitops.plan.Plan;
|
||||||
|
import main.java.com.djrapitops.plan.Settings;
|
||||||
import main.java.com.djrapitops.plan.data.AnalysisData;
|
import main.java.com.djrapitops.plan.data.AnalysisData;
|
||||||
|
import main.java.com.djrapitops.plan.locale.Locale;
|
||||||
|
import main.java.com.djrapitops.plan.locale.Msg;
|
||||||
|
import main.java.com.djrapitops.plan.ui.text.TextUI;
|
||||||
|
import main.java.com.djrapitops.plan.utilities.HtmlUtils;
|
||||||
import main.java.com.djrapitops.plan.utilities.analysis.Analysis;
|
import main.java.com.djrapitops.plan.utilities.analysis.Analysis;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class is used to store the most recent AnalysisData object and to run
|
* This class is used to store the most recent AnalysisData object and to run
|
||||||
* Analysis.
|
* Analysis.
|
||||||
@ -13,10 +26,13 @@ import main.java.com.djrapitops.plan.utilities.analysis.Analysis;
|
|||||||
*/
|
*/
|
||||||
public class AnalysisCacheHandler {
|
public class AnalysisCacheHandler {
|
||||||
|
|
||||||
|
private final Plan plugin;
|
||||||
private final Analysis analysis;
|
private final Analysis analysis;
|
||||||
private AnalysisData cache;
|
private AnalysisData cache;
|
||||||
private boolean analysisEnabled;
|
private boolean analysisEnabled;
|
||||||
|
|
||||||
|
private Set<UUID> notifyWhenCached;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Constructor.
|
* Class Constructor.
|
||||||
* <p>
|
* <p>
|
||||||
@ -25,8 +41,10 @@ public class AnalysisCacheHandler {
|
|||||||
* @param plugin Current instance of Plan
|
* @param plugin Current instance of Plan
|
||||||
*/
|
*/
|
||||||
public AnalysisCacheHandler(Plan plugin) {
|
public AnalysisCacheHandler(Plan plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
analysis = new Analysis(plugin);
|
analysis = new Analysis(plugin);
|
||||||
analysisEnabled = true;
|
analysisEnabled = true;
|
||||||
|
notifyWhenCached = new HashSet<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -43,6 +61,33 @@ public class AnalysisCacheHandler {
|
|||||||
*/
|
*/
|
||||||
public void cache(AnalysisData data) {
|
public void cache(AnalysisData data) {
|
||||||
cache = data;
|
cache = data;
|
||||||
|
for (UUID uuid : notifyWhenCached) {
|
||||||
|
Optional<IPlayer> player = plugin.fetch().getPlayer(uuid);
|
||||||
|
if (player.isPresent()) {
|
||||||
|
sendAnalysisMessage(player.get());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
notifyWhenCached.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void sendAnalysisMessage(ISender sender) {
|
||||||
|
boolean textUI = Settings.USE_ALTERNATIVE_UI.isTrue();
|
||||||
|
sender.sendMessage(Locale.get(Msg.CMD_HEADER_ANALYZE).toString());
|
||||||
|
if (textUI) {
|
||||||
|
sender.sendMessage(TextUI.getAnalysisMessages());
|
||||||
|
} else {
|
||||||
|
// Link
|
||||||
|
String url = HtmlUtils.getServerAnalysisUrlWithProtocol();
|
||||||
|
String message = Locale.get(Msg.CMD_INFO_LINK).toString();
|
||||||
|
boolean console = !CommandUtils.isPlayer(sender);
|
||||||
|
if (console) {
|
||||||
|
sender.sendMessage(message + url);
|
||||||
|
} else {
|
||||||
|
sender.sendMessage(message);
|
||||||
|
sender.sendLink(" ", Locale.get(Msg.CMD_INFO_CLICK_ME).toString(), url);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sender.sendMessage(Locale.get(Msg.CMD_CONSTANT_FOOTER).toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -83,4 +128,10 @@ public class AnalysisCacheHandler {
|
|||||||
analysis.setTaskId(-1);
|
analysis.setTaskId(-1);
|
||||||
analysisEnabled = true;
|
analysisEnabled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void addNotification(ISender sender) {
|
||||||
|
if (CommandUtils.isPlayer(sender)) {
|
||||||
|
notifyWhenCached.add(((IPlayer) sender.getSender()).getUuid());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user