Search in sources :

Example 1 with TaskManager

use of me.semx11.autotip.core.TaskManager in project Hyperium by HyperiumClient.

the class Autotip method init.

public void init() {
    ErrorReport.setAutotip(this);
    RequestHandler.setAutotip(this);
    UniversalUtil.setAutotip(this);
    minecraft = Minecraft.getMinecraft();
    mcVersion = UniversalUtil.getMinecraftVersion();
    version = new Version(VERSION);
    messageUtil = new MessageUtil(this);
    registerEvents(new EventClientTick(this));
    taskManager = new TaskManager();
    taskManager.schedule(this::setup, 0);
}
Also used : TaskManager(me.semx11.autotip.core.TaskManager) MinecraftVersion(me.semx11.autotip.util.MinecraftVersion) Version(me.semx11.autotip.util.Version) MessageUtil(me.semx11.autotip.chat.MessageUtil) EventClientTick(me.semx11.autotip.event.impl.EventClientTick)

Example 2 with TaskManager

use of me.semx11.autotip.core.TaskManager 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)

Example 3 with TaskManager

use of me.semx11.autotip.core.TaskManager 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();
}
Also used : TaskManager(me.semx11.autotip.core.TaskManager) SessionManager(me.semx11.autotip.core.SessionManager) InvokeEvent(cc.hyperium.event.InvokeEvent)

Example 4 with TaskManager

use of me.semx11.autotip.core.TaskManager 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);
        }
    });
}
Also used : TaskManager(me.semx11.autotip.core.TaskManager) SessionManager(me.semx11.autotip.core.SessionManager) InvokeEvent(cc.hyperium.event.InvokeEvent)

Aggregations

TaskManager (me.semx11.autotip.core.TaskManager)4 SessionManager (me.semx11.autotip.core.SessionManager)3 InvokeEvent (cc.hyperium.event.InvokeEvent)2 MessageUtil (me.semx11.autotip.chat.MessageUtil)2 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 MessageOption (me.semx11.autotip.chat.MessageOption)1 CommandAbstract (me.semx11.autotip.command.CommandAbstract)1 Config (me.semx11.autotip.config.Config)1 GlobalSettings (me.semx11.autotip.config.GlobalSettings)1 StatsManager (me.semx11.autotip.core.StatsManager)1