Часть функционала BANNotifications | Expensive 3.1 base

  • Автор темы Автор темы Moyten
  • Дата начала Дата начала
МАКСИМ ХИПХОП?
Буквально перед уездом позавчера это сделал 0_0…И там можно обойтись без твоих патернов и гетать прям с сообщения причину бана.
паттернами наилучший способ
 
тогда не было фикса и киллки
На счёт килки хз мб ты с Евы или с темы какой-то взял, но говорить что фикса на фт не было 15 ноября, когда фикс 9 выложили, это реально твой проеь
 

Вложения

  • Screenshot_20250107_173347_Yandex Browser.jpg
    Screenshot_20250107_173347_Yandex Browser.jpg
    632.6 KB · Просмотры: 47
Буквально перед уездом позавчера это сделал 0_0…И там можно обойтись без твоих патернов и гетать прям с сообщения причину бана.
и че? я тоже это сделал пару дней назад, паттерны лучше всего потому что у тебя через пизду все отрендерится без них
МАКСИМ ХИПХОП?
ЧТОО МАКСИМ ХИПХОП ЕЕЕ
 
/up легенда нашего времени
 
Всем ку, сливаю уведомления о бане игроков, в себе содержит ник забаненного, причину и срок, исходник не мой, но изначально там было только уведомление что был бан, тоесть не писало ни причину ни ник ни срок, короче держите
SS: Посмотреть вложение 294821


BanNotification, опять мойтен слил какую то хуйню?:
Expand Collapse Copy
package fgnepasti.wonderful.ui.display.notifutils;

import com.google.common.eventbus.Subscribe;
import fgnepasti.wonderful.events.EventPacket;
import fgnepasti.wonderful.functions.api.Category;
import fgnepasti.wonderful.functions.api.Function;
import fgnepasti.wonderful.functions.api.FunctionRegister;
import fgnepasti.wonderful.functions.api.Notificpenus;
import fgnepasti.wonderful.functions.settings.impl.BooleanSetting;
import net.minecraft.network.IPacket;
import net.minecraft.network.play.server.SChatPacket;
import net.minecraft.network.play.server.SJoinGamePacket;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.TextFormatting;
import net.minecraft.util.text.event.HoverEvent;

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

@FunctionRegister(name = "BanNotification", type = Category.Render)
public class BanNotif extends Function {
    public final BooleanSetting name = new BooleanSetting("Писать ник", true);
    public final BooleanSetting srok = new BooleanSetting("Писать срок", false);

    private final Pattern banMessagePattern = Pattern.compile("\\[♨] (\\S+) забанен \\[Подробнее\\]", 256);
    private final Pattern reasonPattern1 = Pattern.compile("Причина: Пункт (\\d+\\.\\d+|\\d+\\.\\d+\\.\\d+)", 256);
    private final Pattern reasonPattern2 = Pattern.compile("Причина: \\[FunAC\\] Пункт (\\d+\\.\\d+|\\d+\\.\\d+\\.\\d+)", 256);
    private final Pattern srokPattern = Pattern.compile("Окончание: (\\d{1,3} д|навсегда)", Pattern.CASE_INSENSITIVE);

    {
        addSettings(name, srok);
    }

    @Subscribe
    public void onReceivePacket(EventPacket e) {
        IPacket packet = e.getPacket();
        if (packet instanceof SChatPacket packet1) {
            String s1 = packet1.getChatComponent().getString();
            Matcher matcher = this.banMessagePattern.matcher(s1);
            if (matcher.find()) {
                try {
                    String bannedPlayer = "";
                    if (name.get()) {
                        bannedPlayer = matcher.group(1);
                    }
                    ITextComponent component = packet1.getChatComponent();
                    HoverEvent hoverEvent = component.getStyle().getHoverEvent();
                    String reason = " за неизвестно";
                    String dlina = " на неизвестно";

                    if (hoverEvent != null) {
                        String s = ((ITextComponent) hoverEvent.getParameter(HoverEvent.Action.SHOW_TEXT)).getString();
                        Matcher matcher1 = this.reasonPattern1.matcher(s);
                        Matcher matcher2 = this.reasonPattern2.matcher(s);
                        if (matcher1.find()) {
                            reason = " за " + matcher1.group(1);
                        } else if (matcher2.find()) {
                            reason = " от [FunAC] за " + matcher2.group(1);
                        }
                        Matcher matcher3 = srokPattern.matcher(s);
                        if (matcher3.find()) {
                            if (srok.get()) {
                                if (matcher3.group(1).equals("навсегда")) {
                                    dlina = " " + matcher3.group(1);
                                } else {
                                    dlina = " на " + matcher3.group(1);
                                }
                            } else {
                                dlina = "";
                            }
                        }
                    }
                    Notificpenus.NOTIFICATION_MANAGER.add(TextFormatting.RED + "" + TextFormatting.BOLD +
                            "БАН " + TextFormatting.WHITE + bannedPlayer + reason + dlina, "warn", 5);
                } catch (Exception exception) {
                    exception.printStackTrace();
                }
            }
        }
    }
}

Держите, можно сказать чуть запоздалый подарок на нг, кому надо чуть подправит незначительные ошибки в коде, заменит вывод текста на print или свои системы, всем удачи
уже запастил в спрунки клиент
 
Notificpenus где взять
 
дайте нотификпенус
 
не работает функ можешь не пастить
 
Назад
Сверху Снизу