-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для 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;
}
}
}