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

Java. Проблема с вводом

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

Статус темы:
Закрыта.
  1. Автор темы
    Типа админ:D

    Типа админ:D Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    B1ruk
    Здравствуйте.
    Данная проблема не связана с майнкрафтом(будет связана позже).


    В коде программы находится таймер, который каждую секунду выводит в консоль текст.

    Так же, в коде есть функция, которая ловит вводимые данные в консоли.

    Проблема в том, что эти вводимые данные "покрывает" выводимый текст. А нужно, чтобы вводимый текст ВСЕГДА был под выводимым текстом. Как в консоли сервера майнкрафт
    Проблема выглядит примерно вот так:

    [​IMG]

    Есть ли какое-нибудь решение данной проблемы?

    Код:
    Код:
    package main.Main;
    
    import java.util.HashMap;
    import java.util.Map;
    import java.util.StringTokenizer;
    import java.util.Timer;
    import java.util.TimerTask;
    
    public class Main {
    
        public static void main(String[] args){
            new Timer().schedule(new TimerTask() {
                @Override
                public void run() {
                    System.out.println("Выводимый текст");
                }
            }, 1000, 1000);
            commands();
        }
    
         public static void commands(){
            Thread commands = new Thread(){
                @Override
                public void run(){
                    while(true){
                        byte bKbd[] = new byte[256];
                        String szStr = "";
                        StringTokenizer st;
                        System.out.println(">");
                        try {
                            int iCnt = System.in.read(bKbd);
                            szStr = new String(bKbd, 0, iCnt);
                            st = new StringTokenizer(szStr, "\r\n");
                            szStr = (String)st.nextElement();
                        } catch(Exception ex){
                            if(ex.toString().equals("java.util.NoSuchElementException")){
                                System.out.println("Введите команду");
                                continue;
                            }
                        }
    
                        String[] args;
                        args = szStr.split(" ");
                        switch (args[0]){
                            case "shutdown":
                                System.exit(0);
                                break;
                            default:
                                System.out.println("Команда не найдена");
                                break;
                        }
                    }
                }
            };
            commands.start();
         }
    }
     
    Последнее редактирование: 17 май 2016
  2. Хостинг MineCraft
    <
  3. Starr

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

    Баллы:
    98
    Имя в Minecraft:
    _Starr_
    + \n
    ..
    Профит
     
  4. Автор темы
    Типа админ:D

    Типа админ:D Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    B1ruk
    Это так же покрывает текст.[DOUBLEPOST=1463496619,1463496552][/DOUBLEPOST]
    Забыл добавить код. Посмотрите.
     
  5. Larin

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

    Баллы:
    103
    Код:
    } catch(Exception ex){
          if(ex.toString().equals"java.util.NoSuchElementException"
    Ясно.
    Что хотел-то?
    Так и не понял, что ты хотел. Так попробуй:
    Код:
    System.out.println("\nВыводимый текст");
     
  6. Автор темы
    Типа админ:D

    Типа админ:D Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    B1ruk
    ВЫВОДИМЫЙ ТЕКСТ должен быть всегда сверху. А ВВОДИМЫЙ всегда снизу. Как в консоли сервера майнкрафт.
    Не обращайте внимания на ошибки в консоли. Запустил первый попавшийся сервер.
    [​IMG]
     

    Вложения:

  7. Larin

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

    Баллы:
    103
    Это особенность CMD.
     
  8. Автор темы
    Типа админ:D

    Типа админ:D Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    B1ruk
    Так она не работает! Вы так и не поняли!?
     
  9. Larin

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

    Баллы:
    103
    Да не будет это работать в CMD, как бы ты не мучился. Пиши свой враппер, который будет считывать System.out(и писать в System.in) и управлять курсором.

    Про особенность: как раз она и работает. Ищи другую консоль/шелл.
     
  10. MrTrojan

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

    Баллы:
    98
    Skype:
    mrtrojan.ru
    Имя в Minecraft:
    MrTrojan
    Аааа... Создай отдельный класс для обработки команд...
     
  11. CraftCoder

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Либа jline вроде бы это в консоли майна делает.
     
  12. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Декомпильните remote server toolkit, посмотрите как оно там работает.
     
  13. MrTrojan

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

    Баллы:
    98
    Skype:
    mrtrojan.ru
    Имя в Minecraft:
    MrTrojan
    https://github.com/Sabbertran/MCToo...sabbertran/mctoolkit/MCToolkit.java#L169-L269

    Тут вроде идёт обработка команды.[DOUBLEPOST=1463738837,1463738770][/DOUBLEPOST]UPD:
    https://github.com/Sabbertran/MCToo...sabbertran/mctoolkit/MCToolkit.java#L119-L140

    Тут идёт считывание команды с консоли и дальше обработка.
     
  14. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Я имел ввиду другой проект: Minecraft RemoteToolkit © drdanick.
    Там вполне себе неплохая консоль написана, правда под телнет.
     
  15. Автор темы
    Типа админ:D

    Типа админ:D Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    B1ruk
    Спасибо! Как разберусь в коде, выложу эту затею. Может кому надо..
     
Статус темы:
Закрыта.

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