Исходник Перевод времени ивентов в минуты/секунды | Expa 3.1

Начинающий
Статус
Оффлайн
Регистрация
13 Июн 2022
Сообщения
135
Реакции[?]
4
Поинты[?]
3K

Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:

  • бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
  • маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
  • приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
  • обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.

Спасибо!

Java:
package ez.bread.modules.impl.misc;

import com.google.common.eventbus.Subscribe;
import ez.bread.events.EventPacket;
import ez.bread.modules.api.Category;
import ez.bread.modules.api.Module;
import ez.bread.modules.api.ModuleRegister;
import net.minecraft.network.play.server.SChatPacket;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

@ModuleRegister(name = "EventTimer", category = Category.Misc)
public class EventTimer extends Module {

    private static final Pattern SPOOKYTIME_PATTERN = Pattern.compile("\\[1\\] До следующего ивента (\\d+) сек");
    private static final Pattern FUNTIME_PATTERN = Pattern.compile("\\[1\\] До следующего ивента: (\\d+) сек");

    @Subscribe
    public void onPacket(EventPacket event) {
        if (mc.player == null || mc.world == null) return;

        if (event.getPacket() instanceof SChatPacket packet) {
            String message = packet.getChatComponent().getString();

            Matcher spookytimematcher = SPOOKYTIME_PATTERN.matcher(message);
            Matcher funtimematcher = FUNTIME_PATTERN.matcher(message);

            if (spookytimematcher.find()) {
                processEventTime(Integer.parseInt(spookytimematcher.group(1)));
            } else if (funtimematcher.find()) { // да-да лютый SE$$$$$$$$$$$LF CODE
                processEventTime(Integer.parseInt(funtimematcher.group(1)));
            }
        }
    }

    private void processEventTime(int seconds) {
        int minutes = seconds / 60;
        int remainingSeconds = seconds % 60;

        String minuteText = getDeclension(minutes, "минута", "минуты", "минут");
        String secondText = getDeclension(remainingSeconds, "секунда", "секунды", "секунд");

        String timeMessage;
        if (minutes > 0 && remainingSeconds > 0) {
            timeMessage = String.format("До ивента осталось: %d %s и %d %s.", minutes, minuteText, remainingSeconds, secondText);
        } else if (minutes > 0) {
            timeMessage = String.format("До ивента осталось: %d %s.", minutes, minuteText);
        } else {
            timeMessage = String.format("До ивента осталось: %d %s.", remainingSeconds, secondText);
        }

        print(timeMessage);
    }

    private String getDeclension(int number, String singular, String pluralFew, String pluralMany) {
        int lastTwoDigits = number % 100;
        int lastDigit = number % 10;

        if (lastTwoDigits >= 11 && lastTwoDigits <= 14) {
            return pluralMany;
        }

        switch (lastDigit) {
            case 1:
                return singular;
            case 2:
            case 3:
            case 4:
                return pluralFew;
            default:
                return pluralMany;
        }
    }
}
 
Начинающий
Статус
Оффлайн
Регистрация
14 Апр 2023
Сообщения
538
Реакции[?]
5
Поинты[?]
2K
Java:
package ez.bread.modules.impl.misc;

import com.google.common.eventbus.Subscribe;
import ez.bread.events.EventPacket;
import ez.bread.modules.api.Category;
import ez.bread.modules.api.Module;
import ez.bread.modules.api.ModuleRegister;
import net.minecraft.network.play.server.SChatPacket;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

@ModuleRegister(name = "EventTimer", category = Category.Misc)
public class EventTimer extends Module {

    private static final Pattern SPOOKYTIME_PATTERN = Pattern.compile("\\[1\\] До следующего ивента (\\d+) сек");
    private static final Pattern FUNTIME_PATTERN = Pattern.compile("\\[1\\] До следующего ивента: (\\d+) сек");

    @Subscribe
    public void onPacket(EventPacket event) {
        if (mc.player == null || mc.world == null) return;

        if (event.getPacket() instanceof SChatPacket packet) {
            String message = packet.getChatComponent().getString();

            Matcher spookytimematcher = SPOOKYTIME_PATTERN.matcher(message);
            Matcher funtimematcher = FUNTIME_PATTERN.matcher(message);

            if (spookytimematcher.find()) {
                processEventTime(Integer.parseInt(spookytimematcher.group(1)));
            } else if (funtimematcher.find()) { // да-да лютый SE$$$$$$$$$$$LF CODE
                processEventTime(Integer.parseInt(funtimematcher.group(1)));
            }
        }
    }

    private void processEventTime(int seconds) {
        int minutes = seconds / 60;
        int remainingSeconds = seconds % 60;

        String minuteText = getDeclension(minutes, "минута", "минуты", "минут");
        String secondText = getDeclension(remainingSeconds, "секунда", "секунды", "секунд");

        String timeMessage;
        if (minutes > 0 && remainingSeconds > 0) {
            timeMessage = String.format("До ивента осталось: %d %s и %d %s.", minutes, minuteText, remainingSeconds, secondText);
        } else if (minutes > 0) {
            timeMessage = String.format("До ивента осталось: %d %s.", minutes, minuteText);
        } else {
            timeMessage = String.format("До ивента осталось: %d %s.", remainingSeconds, secondText);
        }

        print(timeMessage);
    }

    private String getDeclension(int number, String singular, String pluralFew, String pluralMany) {
        int lastTwoDigits = number % 100;
        int lastDigit = number % 10;

        if (lastTwoDigits >= 11 && lastTwoDigits <= 14) {
            return pluralMany;
        }

        switch (lastDigit) {
            case 1:
                return singular;
            case 2:
            case 3:
            case 4:
                return pluralFew;
            default:
                return pluralMany;
        }
    }
}
очень давно сливали
 
Сверху Снизу