Помогите Запрет получения сообщений, кроме нужных

  • Автор темы Автор темы SaMEC
  • Дата начала Дата начала

SaMEC

Старожил
Пользователь
Баллы
173
Имя в Minecraft
Nick
Вот простой пример.
Игрок ведет диалог с НПС и в чате пишется только нужные сообщения, без сообщений других игроков и других плагинов.
 
Самый простой способ - вести прослушку исходящих пакетов чата.
Как-то отличать нужные сообщения от посторонних. По префиксу, например. Посторонние отменять. Для работы с пакетами можно использовать ProtocolLib и ProtocolWrapper
 
Самый простой способ - вести прослушку исходящих пакетов чата.
Как-то отличать нужные сообщения от посторонних. По префиксу, например. Посторонние отменять. Для работы с пакетами можно использовать ProtocolLib и ProtocolWrapper
Да, я думал о том что пакеты можно перехватить. Просто хотел узнать может есть способ по проще. Похоже, что нет.
 
Да, я думал о том что пакеты можно перехватить. Просто хотел узнать может есть способ по проще. Похоже, что нет.
Это не так сложно, как может показаться. В библиотеке уже всё сделано за тебе, осталось лишь написать обработчик пакетов чата.
Я думаю, даже на русском есть статьи, а то и видео по работе с ProtocolLib
 
Код:
    public void hack(Plugin plugin) {
        ProtocolManager manager = ProtocolLibrary.getProtocolManager();
        manager.addPacketListener(new PacketServerChat(plugin, new PacketType[] { PacketType.Play.Server.CHAT }));
    }

Код:
public class PacketServerChat extends PacketAdapter {
    public PacketServerChat(Plugin plugin, PacketType[] type) {
        super(plugin, type);
    }

    public void onPacketSending(PacketEvent event) {
        Player player = event.getPlayer();
        WrapperPlayServerChat packet = new WrapperPlayServerChat(event.getPacket());
        WrappedChatComponent wchat = packet.getMessage();
        ChatType ctype = packet.getChatType();
        //TODO
    }
}
protocollib + packetwrapper
 
Последнее редактирование:
Код:
    public void hack(Plugin plugin) {
        ProtocolManager manager = ProtocolLibrary.getProtocolManager();
        manager.addPacketListener(new PacketServerChat(plugin, new PacketType[] { PacketType.Play.Server.CHAT }));
    }

Код:
public class PacketServerChat extends PacketAdapter {
    public PacketServerChat(Plugin plugin, PacketType[] type) {
        super(plugin, type);
    }

    public void onPacketSending(PacketEvent event) {
        Player player = event.getPlayer();
        WrapperPlayServerChat packet = new WrapperPlayServerChat(event.getPacket());
        WrappedChatComponent wchat = packet.getMessage();
        ChatType ctype = packet.getChatType();
        //TODO
    }
}
protocollib + packetwrapper
Благодарю.
За меня всю работу сделал😆👍
 
Назад
Верх