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

Обсудим Лепим пиратский лаунчер

Тема в разделе "Управление сервером Bukkit", создана пользователем Oinvizion Craft, 27 сен 2016.

  1. Автор темы
    Oinvizion Craft

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

    Баллы:
    76
    Я вообще запутался:
    versionlist["versions"] get(selectedIndex) get("url")
    Так что ли? Но оно не робит[DOUBLEPOST=1479061399,1479060780][/DOUBLEPOST]Спасибо!
    Вот конечный вид:
    versionlist["versions"][selectedIndex]["url"]
     
  2. Хостинг MineCraft
    <
  3. alexandrage

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

    Баллы:
    173
    Skype:
    alexandr0116
    Долго ты думал...
     
  4. Автор темы
    Oinvizion Craft

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

    Баллы:
    76
    Да, просто код корявый немного вышел, теперь всё норм, спс
     
  5. alexandrage

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

    Баллы:
    173
    Skype:
    alexandr0116
    Теперь думай, как запускать клиенты с мульти json, где пишется inheritsFrom и jar :D.
     
  6. Автор темы
    Oinvizion Craft

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

    Баллы:
    76
  7. alexandrage

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

    Баллы:
    173
    Skype:
    alexandr0116
  8. Автор темы
    Oinvizion Craft

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

    Баллы:
    76
    Хотя я до этого ещё и не дошёл, но всё равно спасибо![DOUBLEPOST=1479063283,1479062246][/DOUBLEPOST][DOUBLEPOST=1479069348][/DOUBLEPOST]У меня тут проблемка, короче в ComboBox пишется такие первые две строчки:

    versionlistbox.Items.Add("Последняя версия: " + Convert.ToString(versionlist["latest"]["release"]));
    versionlistbox.Items.Add("Последний снапшот: " + Convert.ToString(versionlist["latest"]["snapshot"]));

    Откуда лаунчеру узнать правильный selectedIndex этих строк и остальных, ведь у этих первых двух нет url???[DOUBLEPOST=1479076965][/DOUBLEPOST]У меня есть джоновский массив versionlist["versions"]
    И есть версия, например "1.10.2"
    Как отрыть индекс элемента "1.10.2" в этом массиве???
    Типа стандартного
    int переменная = Array.IndexOf(массив, объект);[DOUBLEPOST=1479574341][/DOUBLEPOST]Слушай, а как организовать "консоль разработчика"?
    Т.е. Чтобы Java выводила все действия в TextBox или в cmd
    Но если в cmd, то чтобы при закрытии окна, майнкрафт продолжал работать.
     
    Последнее редактирование: 13 ноя 2016
  9. alexandrage

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

    Баллы:
    173
    Skype:
    alexandr0116
    Цепляешься к процессу и выводишь консоль.
     
  10. Автор темы
    Oinvizion Craft

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

    Баллы:
    76
    Я не очень понял что ты сказал, поясни пожалуйста[DOUBLEPOST=1479574776,1479574742][/DOUBLEPOST]А понял. Только как это организовать?[DOUBLEPOST=1479621373][/DOUBLEPOST]Короче так, у меня есть некий Rich Text Box в который должен выводится весь процесс майнкрафта (его лог)
    Пока единственное что я придумал вместе с гуглом:

    Добавить в строку запуска майна com.manage.Program > С:/Users/Username/Desktop/log.txt

    А потом:

    Код:
    while (1 == 1) //Тупо, согласен
                {
                    await Task.Delay(5);
                    StreamReader sw = new StreamReader(@"С:/Users/Username/Desktop/log.txt");
                    string read_line = sw.ReadToEnd();
                    form3.richTextBox1.Text = read_line;
                }
    Но он не хочет читать файл т.к. он "открыт в другой программе"[DOUBLEPOST=1479666822][/DOUBLEPOST]Всё, с выводом логов и с консолью разобрался. Сделал топором, но зато работает.[DOUBLEPOST=1479763047][/DOUBLEPOST]
    Я сделал возможность переключиться. Первый режим - это отдельной формой, второй - во вкладке[DOUBLEPOST=1479764652][/DOUBLEPOST]А зачем это надо?:

    Код:
    "logging": {
            "client": {
                "file": {
                    "id": "client-1.7.xml",
                    "sha1": "49e2e41bc339698bd8199e0da9398c926e68c95d",
                    "size": 467,
                    "url": "https://launchermeta.mojang.com/mc/log_configs/client-1.7.xml/49e2e41bc339698bd8199e0da9398c926e68c95d/client-1.7.xml"
                },
                "argument": "-Dlog4j.configurationFile=${path}",
                "type": "log4j2-xml"
            }
        },
    [DOUBLEPOST=1479766791][/DOUBLEPOST]И ещё вопрос, что обозначает параметр action?

    Код:
    "name": "org.lwjgl.lwjgl:lwjgl_util:2.9.0",
          "rules": [
            {
              "action": "allow"
            },
            {
              "action": "disallow",
              "os": {
                "name": "osx",
                "version": "^10\\.5\\.\\d$"
              }
            }
          ]
        },
    [DOUBLEPOST=1480261807][/DOUBLEPOST]Всё-таки мой топорный метод не сработал.

    psi.StartInfo.FileName = "java.exe";
    psi.StartInfo.UseShellExecute = false;
    psi.StartInfo.CreateNoWindow = true;
    psi.StartInfo.Arguments = @"-XX:HeapDumpPath...";

    Как сделать вывод логово такого плана?
     
  11. alexandrage

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

    Баллы:
    173
    Skype:
    alexandr0116
    Код:
            ProcessStartInfo Info = new ProcessStartInfo("java");
            Info.Arguments = url;
            Info.WorkingDirectory = clientdir;
            Info.UseShellExecute = false;
            Info.RedirectStandardOutput = true;
            Process process = new Process();
            process.StartInfo = Info;
            int lineCount = 0;
            StringBuilder output = new StringBuilder();
            process.OutputDataReceived += new DataReceivedEventHandler((sender, e) => {
                if (!String.IsNullOrEmpty(e.Data)) {
                    lineCount++;
                    output.Append("\n[" + lineCount + "]: " + e.Data);
                }
            });
            process.Start();
            Выводим в неком гуи или консоли output;
    [DOUBLEPOST=1480262395,1480262291][/DOUBLEPOST]В java это намного проще, и можно спокойно закрыть консоль не убив запущенный процесс.
     
  12. Автор темы
    Oinvizion Craft

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

    Баллы:
    76
  13. alexandrage

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

    Баллы:
    173
    Skype:
    alexandr0116
    Все там правильно, эт твоя иде писдит.
    [​IMG]
     
  14. Автор темы
    Oinvizion Craft

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

    Баллы:
    76
    А надо отдельным методом делать?[DOUBLEPOST=1480268733,1480267792][/DOUBLEPOST]Ну типо я сделал
    richTextBox1.AppendText("\n[" + lineCount + "]: " + e.Data);

    Но оно ничего не выводит.
     
  15. alexandrage

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

    Баллы:
    173
    Skype:
    alexandr0116
    using System.Diagnostics; забыл наверное.
     
  16. Автор темы
    Oinvizion Craft

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

    Баллы:
    76
    Программа не доходит до
    process.OutputDataReceived += new DataReceivedEventHandler((sender, e) => {
     
  17. alexandrage

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

    Баллы:
    173
    Skype:
    alexandr0116
    Выводить нужно output
     
  18. Автор темы
    Oinvizion Craft

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

    Баллы:
    76
    Ну поверь, без System.Diagnostics оно вообще майн не запустит. А всё открывается, и java-вская консоль с логами, но в моём richtextbox пусто[DOUBLEPOST=1480269138,1480269030][/DOUBLEPOST]Типо так что ли?
    richTextBox1.AppendText(Convert.ToString(output));[DOUBLEPOST=1480269266][/DOUBLEPOST]process.OutputDataReceived += new DataReceivedEventHandler((sender, e) => {
    MessageBox.Show("123");

    Сообщение не выводится, следовательно программа игнорирует process.OutputDataReceived += new DataReceivedEventHandler((sender, e) => {
     
  19. alexandrage

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

    Баллы:
    173
    Skype:
    alexandr0116
    Есть еще RedirectStandardError = true
    process.ErrorDataReceived += new DataReceivedEventHandler((sender, e) => {
    В некоторых версиях майна идет еррор стреам.
     
  20. Автор темы
    Oinvizion Craft

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

    Баллы:
    76
    RedirectStandardError = true
    уже пробывал - не помогло[DOUBLEPOST=1480270161,1480269988][/DOUBLEPOST]Он тупо игнорит это:
    process.Output/ErrorDataReceived += new DataReceivedEventHandler((sender, e) => {
    MessageBox.Show("123");
     
  21. alexandrage

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

    Баллы:
    173
    Skype:
    alexandr0116
    Код:
            Info.UseShellExecute = false;
            Info.RedirectStandardOutput = true;
            Info.RedirectStandardError = true;
            Process process = new Process();
            process.StartInfo = Info;
            Action<object, DataReceivedEventArgs> actionWrite = (sender, e) =>
            {
                Console.WriteLine(e.Data);
            };
            process.ErrorDataReceived += (sender, e) => actionWrite(sender, e);
            process.OutputDataReceived += (sender, e) => actionWrite(sender, e);
            process.Start();
            process.BeginOutputReadLine();
            process.BeginErrorReadLine();
            process.WaitForExit();
     

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