Search in sources :

Example 1 with GlobalSettings

use of me.semx11.autotip.config.GlobalSettings in project Hyperium by HyperiumClient.

the class Autotip method reloadGlobalSettings.

public void reloadGlobalSettings() {
    SettingsReply reply = SettingsRequest.of(this).execute();
    if (!reply.isSuccess()) {
        throw new AssertionError("Connection error while fetching global settings");
    }
    globalSettings = reply.getSettings();
}
Also used : SettingsReply(me.semx11.autotip.api.reply.impl.SettingsReply)

Example 2 with GlobalSettings

use of me.semx11.autotip.config.GlobalSettings 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));
    });
}
Also used : StatsMessageMatcher(me.semx11.autotip.message.StatsMessageMatcher) MessageMatcher(me.semx11.autotip.message.MessageMatcher) StatsMessageMatcher(me.semx11.autotip.message.StatsMessageMatcher) Message(me.semx11.autotip.message.Message) Config(me.semx11.autotip.config.Config) CommandLimbo(me.semx11.autotip.command.impl.CommandLimbo) MessageOption(me.semx11.autotip.chat.MessageOption) GlobalSettings(me.semx11.autotip.config.GlobalSettings) StatsDaily(me.semx11.autotip.stats.StatsDaily) InvokeEvent(cc.hyperium.event.InvokeEvent)

Example 3 with GlobalSettings

use of me.semx11.autotip.config.GlobalSettings 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;
    }
}
Also used : Autotip(me.semx11.autotip.Autotip) MessageOption(me.semx11.autotip.chat.MessageOption) TaskType(me.semx11.autotip.core.TaskManager.TaskType) Arrays(java.util.Arrays) CommandAbstract(me.semx11.autotip.command.CommandAbstract) SessionManager(me.semx11.autotip.core.SessionManager) TaskManager(me.semx11.autotip.core.TaskManager) EventClientConnection(me.semx11.autotip.event.impl.EventClientConnection) Collectors(java.util.stream.Collectors) StatsDaily(me.semx11.autotip.stats.StatsDaily) UniversalUtil(me.semx11.autotip.universal.UniversalUtil) Objects(java.util.Objects) DateTimeParseException(java.time.format.DateTimeParseException) List(java.util.List) Config(me.semx11.autotip.config.Config) DayOfWeek(java.time.DayOfWeek) LocalDate(java.time.LocalDate) DateTimeFormatter(java.time.format.DateTimeFormatter) MessageUtil(me.semx11.autotip.chat.MessageUtil) LocalTime(java.time.LocalTime) CommandBase.getListOfStringsMatchingLastWord(net.minecraft.command.CommandBase.getListOfStringsMatchingLastWord) StatsManager(me.semx11.autotip.core.StatsManager) GlobalSettings(me.semx11.autotip.config.GlobalSettings) Collections(java.util.Collections) EventClientConnection(me.semx11.autotip.event.impl.EventClientConnection) Config(me.semx11.autotip.config.Config) SessionManager(me.semx11.autotip.core.SessionManager) GlobalSettings(me.semx11.autotip.config.GlobalSettings) LocalDate(java.time.LocalDate) DateTimeParseException(java.time.format.DateTimeParseException) TaskManager(me.semx11.autotip.core.TaskManager) MessageUtil(me.semx11.autotip.chat.MessageUtil) StatsManager(me.semx11.autotip.core.StatsManager) MessageOption(me.semx11.autotip.chat.MessageOption) StatsDaily(me.semx11.autotip.stats.StatsDaily)

Aggregations

MessageOption (me.semx11.autotip.chat.MessageOption)2 Config (me.semx11.autotip.config.Config)2 GlobalSettings (me.semx11.autotip.config.GlobalSettings)2 StatsDaily (me.semx11.autotip.stats.StatsDaily)2 InvokeEvent (cc.hyperium.event.InvokeEvent)1 DayOfWeek (java.time.DayOfWeek)1 LocalDate (java.time.LocalDate)1 LocalTime (java.time.LocalTime)1 DateTimeFormatter (java.time.format.DateTimeFormatter)1 DateTimeParseException (java.time.format.DateTimeParseException)1 Arrays (java.util.Arrays)1 Collections (java.util.Collections)1 List (java.util.List)1 Objects (java.util.Objects)1 Collectors (java.util.stream.Collectors)1 Autotip (me.semx11.autotip.Autotip)1 SettingsReply (me.semx11.autotip.api.reply.impl.SettingsReply)1 MessageUtil (me.semx11.autotip.chat.MessageUtil)1 CommandAbstract (me.semx11.autotip.command.CommandAbstract)1 CommandLimbo (me.semx11.autotip.command.impl.CommandLimbo)1