use of me.semx11.autotip.core.SessionManager in project Hyperium by HyperiumClient.
the class Autotip method setup.
private void setup() {
try {
fileUtil = new FileUtil(this);
gson = new GsonBuilder().registerTypeAdapter(Config.class, new ConfigCreator(this)).registerTypeAdapter(StatsDaily.class, new StatsDailyCreator(this)).setExclusionStrategies(new AnnotationExclusionStrategy()).setPrettyPrinting().create();
config = new Config(this);
reloadGlobalSettings();
reloadLocale();
sessionManager = new SessionManager(this);
statsManager = new StatsManager(this);
migrationManager = new MigrationManager(this);
fileUtil.createDirectories();
config.load();
taskManager.getExecutor().execute(() -> migrationManager.migrateLegacyFiles());
registerEvents(new EventClientConnection(this), new EventChatReceived(this));
registerCommands(new CommandAutotip(this), new CommandLimbo(this));
Runtime.getRuntime().addShutdownHook(new Thread(sessionManager::logout));
initialized = true;
} catch (IOException e) {
messageUtil.send("Autotip is disabled because it couldn't create the required files.");
ErrorReport.reportException(e);
} catch (IllegalStateException e) {
messageUtil.send("Autotip is disabled because it couldn't connect to the API.");
ErrorReport.reportException(e);
}
}
use of me.semx11.autotip.core.SessionManager in project Hyperium by HyperiumClient.
the class CommandAutotip method onExecute.
@Override
public void onExecute(String[] args) {
Config config = autotip.getConfig();
MessageUtil messageUtil = autotip.getMessageUtil();
TaskManager taskManager = autotip.getTaskManager();
SessionManager manager = autotip.getSessionManager();
StatsManager stats = autotip.getStatsManager();
GlobalSettings settings = autotip.getGlobalSettings();
if (args.length <= 0) {
messageUtil.sendKey("command.usage");
return;
}
switch(args[0].toLowerCase()) {
case "s":
case "stats":
LocalDate now = LocalDate.now();
if (args.length <= 1) {
stats.get(now).print();
return;
}
String param = args[1].toLowerCase();
switch(param) {
case "d":
case "day":
case "daily":
case "today":
stats.get(now).print();
break;
case "yd":
case "yesterday":
stats.get(now.minusDays(1)).print();
break;
case "w":
case "week":
case "weekly":
stats.getRange(now.with(DayOfWeek.MONDAY), now.with(DayOfWeek.SUNDAY)).print();
break;
case "m":
case "month":
case "monthly":
stats.getRange(now.withDayOfMonth(1), now.withDayOfMonth(now.lengthOfMonth())).print();
break;
case "y":
case "year":
case "yearly":
stats.getRange(now.withDayOfYear(1), now.withDayOfYear(now.lengthOfYear())).print();
break;
case "a":
case "all":
case "total":
case "life":
case "lifetime":
stats.getAll().print();
break;
default:
if (param.contains("-")) {
List<LocalDate> dates = Arrays.stream(param.split("-")).map(string -> {
try {
return LocalDate.parse(string, DATE_FORMAT);
} catch (DateTimeParseException e) {
return null;
}
}).filter(Objects::nonNull).limit(2).sorted().collect(Collectors.toList());
if (dates.size() != 2) {
messageUtil.sendKey("command.stats.invalidRange");
return;
}
stats.getRange(dates.get(0), dates.get(1)).print();
} else if (param.contains("/")) {
try {
LocalDate date = LocalDate.parse(param, DATE_FORMAT);
stats.get(date).print();
} catch (DateTimeParseException e) {
messageUtil.sendKey("command.stats.invalidDate");
}
} else {
messageUtil.sendKey("command.stats.usage");
}
break;
}
break;
case "?":
case "info":
StatsDaily today = stats.get();
messageUtil.getKeyHelper("command.info").separator().sendKey("version", autotip.getVersion()).withKey("credits", context -> context.getBuilder().setHover(context.getKey("creditsHover")).send()).sendKey("status." + (config.isEnabled() ? "enabled" : "disabled")).sendKey("messages", config.getMessageOption()).sendKey("tipsSent", today.getTipsSent()).sendKey("tipsReceived", today.getTipsReceived()).sendKey("statsCommand").separator();
break;
case "m":
case "messages":
try {
if (args.length > 1) {
MessageOption option = MessageOption.valueOfIgnoreCase(args[1]);
config.setMessageOption(option).save();
} else {
config.nextMessageOption().save();
}
messageUtil.sendKey("command.messages.next", config.getMessageOption());
} catch (IllegalArgumentException e) {
messageUtil.sendKey("command.messages.error", args.length > 1 ? args[1] : null);
}
break;
case "t":
case "toggle":
if (!manager.isOnHypixel()) {
config.toggleEnabled().save();
messageUtil.getKeyHelper("command.toggle").sendKey(config.isEnabled() ? "enabled" : "disabled");
return;
}
if (!config.isEnabled()) {
if (!manager.isLoggedIn()) {
taskManager.executeTask(TaskType.LOGIN, manager::login);
config.setEnabled(true).save();
messageUtil.sendKey("command.toggle.enabled");
} else {
messageUtil.sendKey("command.toggle.error");
}
} else {
if (manager.isLoggedIn()) {
taskManager.executeTask(TaskType.LOGOUT, manager::logout);
config.setEnabled(false).save();
messageUtil.sendKey("command.toggle.disabled");
} else {
messageUtil.sendKey("command.toggle.error");
}
}
break;
case "w":
case "wave":
if (!config.isEnabled()) {
messageUtil.sendKey("error.disabled");
return;
}
if (!manager.isOnHypixel()) {
messageUtil.sendKey("error.disabledHypixel");
return;
}
if (manager.getNextTipWave() == 0) {
messageUtil.sendKey("command.wave.error");
return;
}
long t = System.currentTimeMillis();
String next = LocalTime.MIN.plusSeconds((manager.getNextTipWave() - t) / 1000 + 1).format(WAVE_FORMAT);
String last = LocalTime.MIN.plusSeconds((t - manager.getLastTipWave()) / 1000).format(WAVE_FORMAT);
messageUtil.getKeyHelper("command.wave").separator().sendKey("nextWave", next).sendKey("lastWave", last).separator();
break;
case "changelog":
messageUtil.getKeyHelper("command.changelog").separator().sendKey("version", autotip.getVersion()).withKey("entry", context -> settings.getVersionInfo(autotip.getVersion()).getChangelog().forEach(context::send)).separator();
break;
case "debug":
EventClientConnection event = autotip.getEvent(EventClientConnection.class);
Object header = event.getHeader();
messageUtil.getKeyHelper("command.debug").separator().sendKey("serverIp", event.getServerIp()).sendKey("mcVersion", autotip.getMcVersion()).sendKey("header." + (header == null ? "none" : "present"), UniversalUtil.getUnformattedText(header)).separator();
break;
case "reload":
try {
autotip.reloadGlobalSettings();
autotip.reloadLocale();
messageUtil.sendKey("command.reload.success");
} catch (IllegalStateException e) {
messageUtil.sendKey("command.reload.error");
}
break;
default:
messageUtil.send(getUsage());
break;
}
}
use of me.semx11.autotip.core.SessionManager in project Hyperium by HyperiumClient.
the class EventClientConnection method playerLoggedOut.
@InvokeEvent
public void playerLoggedOut(ServerLeaveEvent event) {
TaskManager taskManager = autotip.getTaskManager();
SessionManager manager = autotip.getSessionManager();
manager.setOnHypixel(false);
taskManager.executeTask(TaskType.LOGOUT, manager::logout);
resetHeader();
}
use of me.semx11.autotip.core.SessionManager in project Hyperium by HyperiumClient.
the class EventClientConnection method playerLoggedIn.
@InvokeEvent
public void playerLoggedIn(ServerJoinEvent event) {
TaskManager taskManager = autotip.getTaskManager();
SessionManager manager = autotip.getSessionManager();
autotip.getMessageUtil().clearQueues();
serverIp = UniversalUtil.getRemoteAddress(event).toLowerCase();
lastLogin = System.currentTimeMillis();
taskManager.getExecutor().execute(() -> {
Object header;
int attempts = 0;
while ((header = getHeader()) == null) {
if (attempts > 15)
return;
try {
Thread.sleep(500);
} catch (InterruptedException ignored) {
}
attempts++;
}
if (UniversalUtil.getUnformattedText(header).equals(hypixelHeader)) {
manager.setOnHypixel(true);
if (autotip.getConfig().isEnabled()) {
taskManager.executeTask(TaskType.LOGIN, manager::login);
}
} else {
manager.setOnHypixel(false);
}
});
}
Aggregations