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

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

Discussion in 'Управление сервером Bukkit' started by Oinvizion Craft, Sep 27, 2016.

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

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

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

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

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

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

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

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

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

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

    Trophy Points:
    76
  7. alexandrage

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

    Trophy Points:
    173
    Skype:
    alexandr0116
  8. Автор темы
    Oinvizion Craft

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

    Trophy Points:
    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, то чтобы при закрытии окна, майнкрафт продолжал работать.
     
    Last edited: Nov 13, 2016
  9. alexandrage

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

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

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

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

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

    А потом:

    Code:
    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]А зачем это надо?:

    Code:
    "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?

    Code:
    "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 Администратор

    Trophy Points:
    173
    Skype:
    alexandr0116
    Code:
            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 Активный участник Пользователь

    Trophy Points:
    76
  13. alexandrage

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

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

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

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

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

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

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

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

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

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

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

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

    Trophy Points:
    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 Администратор

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

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

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

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

    Trophy Points:
    173
    Skype:
    alexandr0116
    Code:
            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();
     

Share This Page