1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Совет Запуск Minecraft БЕЗ лаунчера!

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем goul, 2 янв 2013.

  1. Maddourufu

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

    Баллы:
    66
    Это модуль для веб сервера или скрипты сами работают с этой технологией?
    Надо что-то ставить в систему?
     
  2. alexandrage

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

    Баллы:
    173
    Скрипты перекачай новые.
     
  3. Maddourufu

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

    Баллы:
    66
    Ок, спасибо. Зарание еще вопрос:
    Я как-то пытался сделать ланчер, но Eclipse послал меня в глубокую нору.
    Чего-то ему не хватало.

    Я не программист java, поэтому хочу спросить, что нужно ставить в систему / Eclipse, чтобы ланчер точно скомпилировался?
     
  4. alexandrage

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

    Баллы:
    173
    Ничего, он не юзает сторонних библиотек.
     
  5. Maddourufu

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

    Баллы:
    66
    хорошо, попробую. Спасибо.

    Главное, чтоб пароли без шифрования принимал из базы...
     
  6. alexandrage

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

    Баллы:
    173
    UP. Простой запуск клиентов на шарпе. Подключаем к проекту Newtonsoft.Json и DotNetZip. Проверенно на клиентах скаченных mojang лаунчером.

    Код:
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using Newtonsoft.Json.Linq;
    using System.Diagnostics;
    using Ionic.Zip;
    
    class Runs {
        static string assetIndex = "";
        static string clientjar;
        static void Main(string[] args) {
            string clientdir = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\.minecraft\";
            string client = "1.5.2-Forge7.8.1.738";
            string user = "zenit";
            string uuid = "00000000000000000000000000000000";
            string session = "0";
            start(clientdir, client, user, uuid, session);
        }
    
        static void start(string clientdir, string client, string user, string uuid, string session) {
            string nfolder = clientdir + @"versions\" + client + @"\natives";
            Directory.CreateDirectory(nfolder);
            clientjar = client;
            JObject versions = json(clientdir, client);
            assetInd(versions);
            JArray libraries = (JArray)versions["libraries"];
            string assetsdir = "assets";
            string gameassets = assetsdir + @"\virtual\legacy";
            string url = @"-Djava.library.path=versions\" + client + @"\natives -cp ";
            url = libs(libraries, url, clientdir, client, client);
            url += @"versions\" + clientjar + @"\" + clientjar + ".jar ";
            url += (string)versions["mainClass"] + " ";
            url += versions["minecraftArguments"].ToString().
            Replace("${auth_player_name}", user).
            Replace("${version_name}", client).
            Replace("${game_directory}", ".").
            Replace("${assets_root}", assetsdir).
            Replace("${game_assets}", gameassets).
            Replace("${assets_index_name}", assetIndex).
            Replace("${auth_uuid}", uuid).
            Replace("${auth_access_token}", session).
            Replace("${user_type}", "legacy").
            Replace("${version_type}", "release").
            Replace("${user_properties}", "{}");
            Console.WriteLine(url);
            Console.ReadLine();
            ProcessStartInfo Info = new ProcessStartInfo("java");
            Info.Arguments = url;
            Info.WorkingDirectory = clientdir;
            Process.Start(Info);
        }
    
        static string libs(JArray libraries, string url, string clientdir, string client, string n) {
            foreach (var librari in libraries) {
                string[] libdir = librari["name"].ToString().Split(':');
                string libsdir = @"libraries\"+libdir[0].Replace(".", @"\")+@"\"+libdir[1]+@"\"+libdir[2]+@"\"+libdir[1]+"-"+libdir[2];
                if (librari["natives"]==null) {
                    url += libsdir+ ".jar;";
                } else {
                    string natives = clientdir + libsdir + "-natives-windows.jar";
                    string nfolder = clientdir + @"versions\" + n + @"\natives\";
                    unzip(natives, nfolder);
                }
            }
            JObject versions = json(clientdir, client);
            string inheritsFrom = (string)versions["inheritsFrom"];
            if (versions["jar"] != null) {
                clientjar = (string)versions["jar"];
            }
            if (inheritsFrom !=null) {
                versions = json(clientdir, inheritsFrom);
                libraries = (JArray)versions["libraries"];
                return url += libs(libraries, url, clientdir, inheritsFrom, n);
            }
    
            if (versions["assetIndex"] != null){
                assetIndex = (string)versions["assetIndex"]["id"];
            }
            else if (versions["assets"] != null) {
                assetIndex = (string)versions["assets"];
            }
            return url;
        }
    
        static JObject json(string clientdir, string client) {
            string json = clientdir + @"versions\" + client + @"\" + client + ".json";
            return JObject.Parse(File.ReadAllText(json));
        }
    
        static string assetInd(JObject versions) {
            if (versions["assetIndex"] != null) {
                assetIndex = (string)versions["assetIndex"]["id"];
            }
            else if (versions["assets"] != null) {
                assetIndex = (string)versions["assets"];
            }
            return assetIndex;
        }
    
        static void unzip(string zipdfile, string zipfolder) {
            try {
                using (ZipFile zip = ZipFile.Read(zipdfile)) {
                    foreach (ZipEntry ef in zip) {
                        zip.ExtractAll(zipfolder, ExtractExistingFileAction.OverwriteSilently);
                    }
                }
            }
            catch {}
        }
    }
    
     
    Последнее редактирование: 13 окт 2016
  7. Maddourufu

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

    Баллы:
    66
    Скачал твой ланчер, настроил, запускаю - Ошибка подключения.
    Ок. Дал ему свою учетку с полными правами к MySQL, указал несуществующие таблицы - создались iConomy, jobs, usersessions, accounts (хотя указано userz), sashok724_launcher_keys, попытался влезть в таблицы PermissionsEx.
    На этом всё. Просканировал все php на наличие фразы, выдаваемой ланчером - нету.
    Что делать?

    И что такое baseconf, где указано vorelaria ?
    Хм. Куда-то сообщение пропало. Отвечаю:
    > Не нужно было ничего ручками создавать в базе. Просто указываешь в конфиге, где у тебя таблица акккаунтов юзер пароль и тд. И да, у пользователя mysql должны быть права на создание и обновление таблиц. <

    Я дал пользователя с полными правами, некоторые таблицы создались, userz - нет, вместо нее accounts, но ланчер все равно тупит
     
  8. alexandrage

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

    Баллы:
    173
    accounts таблица создается, чтоб юзать лаунчер без сайта с регой из лаунчера. userz? хз о чем ты.
     
  9. Maddourufu

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

    Баллы:
    66
    Я указал таблицу "userz" (ибо users уже есть) в качестве таблицы для учетных записей.
    Возможно надо отключить регистрацию в ланчере или еще что-то?
     
  10. alexandrage

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

    Баллы:
    173
    На авторизацию это не влияет, если у тебя уже есть аккаунт в таблице userz, то регистрация не требуется. Если нету, то напишет неверный логин или пароль.
    Ошибки выполнения php скриптов можно вывести флагами.
    //Error_Reporting(E_ALL | E_STRICT);
    //Ini_Set('display_errors', true);

    Раскоментируй их в connect.php.
     
  11. Maddourufu

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

    Баллы:
    66
    Таблицы нет, она не создается автоматически (права есть).
    Ланчер пишет "Ошибка подключения"
     
  12. alexandrage

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

    Баллы:
    173
    Для работы без аккаунтов кмс создается accounts таблица. Что тебе там еще надо создавать, понятия не имею.
     
  13. Maddourufu

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

    Баллы:
    66
    я запутался.
    У меня уже существует таблица users, которую мне крайне не хотелось бы менять. На нее завязан майн, текущий ланчер и сайт.

    Шифрование я не использую. Как быть?
     
  14. alexandrage

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

    Баллы:
    173
    Ее не нужно менять, от туда берутся только аккаунты. Остальное пишется в usersession. В таблицу аккаунтов ничего не записывется, если отключить регу с лаунчера.
     
  15. Maddourufu

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

    Баллы:
    66
    Значит надо отключить регу в ланчере? Сейчас, если эклипс установится, попробую, отпишусь.
     
  16. alexandrage

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

    Баллы:
    173
    Я выключалку реги на php недописал, кек. Перекачаешь connect.php и reg.php.
     
  17. Maddourufu

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

    Баллы:
    66
    Ок.
    На убунту ланчер из еклипса не стартует, не видет 8ю яву, хотя только что поставил.
    Придется ждать до вечера(
     
  18. alexandrage

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

    Баллы:
    173
    Да он хоть на 6той собирается. Не имеет значения.
     
  19. Maddourufu

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

    Баллы:
    66
    Что-то не идет...

    Exception in thread "main" java.lang.Error: Unresolved compilation problems:
    Syntax error, parameterized types are only available if source level is 1.5 or greater
    Syntax error, parameterized types are only available if source level is 1.5 or greater
    The method setProperty(String, Object) in the type BaseUtils is not applicable for the arguments (String, int)
    The method setProperty(String, Object) in the type BaseUtils is not applicable for the arguments (String, int)
    The method setProperty(String, Object) in the type BaseUtils is not applicable for the arguments (String, int)
    Syntax error, parameterized types are only available if source level is 1.5 or greater
    The method getDeclaredMethod(String, Class[]) in the type Class<capture#1-of ?> is not applicable for the arguments (String, Class<T>)
    The method invoke(Object, Object[]) in the type Method is not applicable for the arguments (null, int)

    at net.launcher.run.Starter.main(Starter.java:18)
    at net.launcher.run.Mainclass.main(Mainclass.java:39)


    ОТБОЙ, завелся
     
  20. alexandrage

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

    Баллы:
    173
    Ты на какой жабе собираешь то? :D
     

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