научись переносить он работает
умне ошибок не было я просто импорты заменил и все xd
научись переносить он работает
че я не правильно сделал package vm.protect.functions.impl.render;
import net.minecraft.network.play.server.SChatPacket;
import vm.protect.events.Packet;
import vm.protect.functions.api.Category;
import vm.protect.functions.api.Function;
import vm.protect.functions.api.FunctionRegister;
import vm.protect.functions.settings.impl.ModeSetting;
import vm.protect.ui.vusials.impl.NotificationManager;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@FunctionRegister(
name = "EventTimer",
description = "Корректно отображает время до следующего события",
type = Category.Misc
)
public class EventTimer extends Function {
public ModeSetting mod = new ModeSetting("Тип отображения", "Уведомление", "Уведомление", "Чат");
private static final Pattern SPOOKYTIME_PATTERN = Pattern.compile("\\[1\\] До следующего ивента (\\d+) сек");
private static final Pattern FUNTIME_PATTERN = Pattern.compile("\\[1\\] До следующего ивента: (\\d+) сек");
public EventTimer() {
addSettings(mod);
}
public void onPacket(Packet event) {
if (mc.player == null || mc.world == null) return;
if (event.getPacket() instanceof SChatPacket packet) {
String message = packet.getChatComponent().getString();
Matcher spookyMatcher = SPOOKYTIME_PATTERN.matcher(message);
Matcher funMatcher = FUNTIME_PATTERN.matcher(message);
if (spookyMatcher.find()) {
processEventTime(Integer.parseInt(spookyMatcher.group(1)));
} else if (funMatcher.find()) {
processEventTime(Integer.parseInt(funMatcher.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);
}
if (mod.is("Уведомление")) {
NotificationManager.NOTIFICATION_MANAGER.add(timeMessage, 3);
} else if (mod.is("Чат")) {
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;
}
return switch (lastDigit) {
case 1 -> singular;
case 2, 3, 4 -> pluralFew;
default -> pluralMany;
};
}
}