Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Как сделать слушатель чата в стороннем приложении

Тема в разделе "Разработка плагинов для новичков", создана пользователем SamyRed, 20 авг 2016.

  1. Автор темы
    SamyRed

    SamyRed Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    4ipolinoMiner
    Здравствуййте. Вопрос такой:
    Как сделать Java приложение, которое будет считывать сообщения из активного окна minecraft? Может подобные приложения уже есть, но я найти не смог. Если знаете - поделитесь, пожалуйста.
     
  2. Хостинг MineCraft
    <
  3. Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Тебе именно из активного окна?
    Просто можно тупо подключиться к серверу и слушать себе сообщения.
     
  4. xDark

    xDark Активный участник Пользователь

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    LogRecord подойдёт вроде для этих дел, но не помню, перехватывает ли он сообщения.
     
  5. Автор темы
    SamyRed

    SamyRed Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    4ipolinoMiner
    Я не доконца поставил вопрос. Нужно чтоб я потом с этим сообщением мог работать.[DOUBLEPOST=1471719813,1471719739][/DOUBLEPOST]Если знаете такой плагин ChatGame, хочу с помощью такого листенера считывать сообщения и автоматически их считать.[DOUBLEPOST=1471720187][/DOUBLEPOST]Может можно как-то через Output-client.log сделать...[DOUBLEPOST=1471765664][/DOUBLEPOST]Если кого-нибдь интересует готовый вариант - кидаю. Не судите строго (Это моя первая программа на Java). Код оооочень кривой, но в какой-то степени рабочий.
    https://mega.nz/#!OpUAALIB!uIgJVowSEUtfcGv_1VaZxxcU0TMnFD8F0r0kDgZKmPs
    Запускать надо через консоль (Java -jar путь к файлу)
     
  6. _EnderWorld_

    _EnderWorld_ Активный участник Пользователь

    Баллы:
    78
    Имя в Minecraft:
    Steve
    Еще бы память при запуске выдать :nerd:
     
  7. Exception_Prototype

    Exception_Prototype Активный участник Пользователь

    Баллы:
    46
    Считали вы файлик, вывели на консоль, а зачем вы копируете его в буфер обмена?
     
  8. Автор темы
    SamyRed

    SamyRed Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    4ipolinoMiner
    Это чисто индивидуальная задачка для меня (Может кому нужно что-то подобное). Посмотрите плагин ChatGame - поймёте зачем :) А если в кратце - Мне надо решить пример, который отправляет сервер и отправить в чат. Если сделаю это первым - получу награду. То есть с помощью этого приложения мне останется только открыть чат, нажать ctrl + v и enter :) Такой себе читер)))
     
  9. Zнамя Юности

    Zнамя Юности Активный участник Пользователь

    Баллы:
    46
    [​IMG]
     
  10. Exception_Prototype

    Exception_Prototype Активный участник Пользователь

    Баллы:
    46
    Логи клиента читай.
     
  11. Автор темы
    SamyRed

    SamyRed Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    4ipolinoMiner
    А что в них не так?
     
  12. Exception_Prototype

    Exception_Prototype Активный участник Пользователь

    Баллы:
    46
    Имеется ввиду логи клиента читай для программы твой. xD
     
  13. Автор темы
    SamyRed

    SamyRed Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    4ipolinoMiner
    Ну я как бы так и делаю.[DOUBLEPOST=1471846703,1471846656][/DOUBLEPOST]
    Код:
    
    import java.awt.Toolkit;
    import java.awt.datatransfer.Clipboard;
    import java.awt.datatransfer.StringSelection;
    import java.io.*;
    import javax.sound.sampled.*;
    
    public class main {
        public static void main (String args[]){
            String nText = null;
            while (true) {
                String lText = "";
                try {
                    Thread.sleep(600);
                } catch (InterruptedException e) {}
                String line = null;
                String line1 = null;
                Integer lineNumber = 0;
                String tmp;
                Integer first;
                Integer second;
                Integer summ;
                BufferedReader in;
                String[] array;
                try {
                    File myFile =new File("C:\\emouru\\playon\\output-client.log");
                    FileReader fileReader = new FileReader(myFile);
                    LineNumberReader lineNumberReader = new LineNumberReader(fileReader);
                    while (lineNumberReader.readLine() != null){
                        lineNumber++;
                    }
                    lineNumberReader.close();
                } catch(IOException e) {
                    e.printStackTrace();
                }
                try{
                    in = new BufferedReader(new FileReader("C:\\emouru\\playon\\output-client.log"));
                    int i = 0;
                    while ((tmp = in.readLine()) != null){
                        line = tmp;
                        if (i == lineNumber - 2) break;
                        i++;
                    }
                    in.close();
                    System.out.println(line);
                } catch (FileNotFoundException exception){
                    System.out.println("");
                } catch (IOException exception){
                    System.out.println("");
                }
                if (line.indexOf("Решите пример: ") != -1){
                    first = new Integer (line.substring(62,65));
                    second = new Integer (line.substring(68, 71));
                    summ = first + second;
                    System.out.println ("Ответ:" + summ);
                    StringSelection stringSelection = new StringSelection(Integer.toString(summ));
                    Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
                    clipboard.setContents(stringSelection, stringSelection);
                    sound();
                }
            }
        }
        public static void sound(){
            try {
                File soundFile = new File("C:\\click.wav");
                AudioInputStream ais = AudioSystem.getAudioInputStream(soundFile);
                Clip clip = AudioSystem.getClip();
                clip.open(ais);
                clip.setFramePosition(0);
                clip.start();
                Thread.sleep(clip.getMicrosecondLength()/1000);
                clip.stop();
                clip.close();
            } catch (IOException | UnsupportedAudioFileException | LineUnavailableException exc) {
                exc.printStackTrace();
            } catch (InterruptedException exc) {}
        }
    }
    
     
    Последнее редактирование: 22 авг 2016
  14. Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Очень было бы приятнее читать код, оформленный в теги CODE=Java.
     
  15. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Тебе мод писать лучше. Чтоб он чат ловил и за тебя ответ слал.
     
  16. Автор темы
    SamyRed

    SamyRed Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    4ipolinoMiner
    Дело в том что не очень хотелось бы модифицировать клиент. А то что у меня, вроде как, не запрещено)) Я имею ввиду сервер. Не очень хотелось бы в бан лететь.
     
  17. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    И че ты там русифицировать собрался? 'chcp 1251' перед запуском клиента непосильная задача написать?
    И че дальше то? Ввести ты ничего не сможешь. Совсем.

    Можно конечно через програмку запускать майнкрафт через proccessbuider и парсить выхлоп лога, после чего использовать тот же буфер обмена, но что-то не то.
     
  18. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    76
    Можно попробовать разобрать, например, TL*unch*r, который заходит на сервера в клиенте при одним лишь щелчке в лаунчере.
     
  19. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    А причем здесь заход?
     
  20. Jampire

    Jampire Старожил Пользователь

    Баллы:
    173
    Skype:
    jampire-h
    Имя в Minecraft:
    Jampire
    это совершенно другое. он клиенту аргумент запуска подмешивает и тот знает куда логиниться. это встроенная функция клиента.
     
  21. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    76
    Первый раз слышу, что такой аргумент существует. Ну что ж, тогда ладно...
    Я думал, что лаунчер взаимодействует непосредственно с приложением-клиентом. Но Jampire уже пояснил...
     

Поделиться этой страницей