use of me.semx11.autotip.config.Config 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.config.Config in project Hyperium by HyperiumClient.
the class EventChatReceived method onChat.
@InvokeEvent
public void onChat(ServerChatEvent event) {
Config config = autotip.getConfig();
if (!autotip.getSessionManager().isOnHypixel()) {
return;
}
String msg = UniversalUtil.getUnformattedText(event);
CommandLimbo limboCommand = autotip.getCommand(CommandLimbo.class);
if (limboCommand.hasExecuted()) {
if (msg.startsWith("A kick occurred in your connection")) {
event.setCancelled(true);
} else if (msg.startsWith("Illegal characters in chat")) {
event.setCancelled(true);
limboCommand.setExecuted(false);
}
}
if (!config.isEnabled())
return;
GlobalSettings settings = autotip.getGlobalSettings();
MessageOption option = config.getMessageOption();
for (Message message : settings.getMessages()) {
MessageMatcher matcher = message.getMatcherFor(msg);
if (matcher.matches()) {
event.setCancelled(message.shouldHide(option));
return;
}
}
String hover = UniversalUtil.getHoverText(event);
settings.getStatsMessages().forEach(message -> {
StatsMessageMatcher matcher = message.getMatcherFor(msg);
if (!matcher.matches())
return;
StatsDaily stats = getStats();
matcher.applyStats(stats);
message.applyHoverStats(hover, stats);
event.setCancelled(message.shouldHide(option));
});
}
use of me.semx11.autotip.config.Config 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.config.Config in project Hyperium by HyperiumClient.
the class Config method migrate.
public Config migrate() {
FileUtil fileUtil = autotip.getFileUtil();
// Check if legacy config file exists
File legacyFile = fileUtil.getFile("options.at");
if (!legacyFile.exists())
return this;
try {
List<String> lines = Files.readAllLines(fileUtil.getPath("options.at"));
if (lines.size() < 2)
return this;
enabled = Boolean.parseBoolean(lines.get(0));
try {
messageOption = MessageOption.valueOf(lines.get(1));
} catch (IllegalArgumentException | NullPointerException e) {
messageOption = MessageOption.SHOWN;
}
// Deletes old file to complete migration
fileUtil.delete(legacyFile);
return save();
} catch (IOException e) {
Autotip.LOGGER.error("Could not read legacy options.at file!");
return save();
}
}
Aggregations