Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

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

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

Я не программист java, поэтому хочу спросить, что нужно ставить в систему / Eclipse, чтобы ланчер точно скомпилировался?
Ничего, он не юзает сторонних библиотек.
 
UP. Простой запуск клиентов на шарпе. Подключаем к проекту Newtonsoft.Json и DotNetZip. Проверенно на клиентах скаченных mojang лаунчером.

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

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

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

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

Я дал пользователя с полными правами, некоторые таблицы создались, userz - нет, вместо нее accounts, но ланчер все равно тупит
accounts таблица создается, чтоб юзать лаунчер без сайта с регой из лаунчера. userz? хз о чем ты.
 
accounts таблица создается, чтоб юзать лаунчер без сайта с регой из лаунчера. userz? хз о чем ты.
Я указал таблицу "userz" (ибо users уже есть) в качестве таблицы для учетных записей.
Возможно надо отключить регистрацию в ланчере или еще что-то?
 
Я указал таблицу "userz" (ибо users уже есть) в качестве таблицы для учетных записей.
Возможно надо отключить регистрацию в ланчере или еще что-то?
На авторизацию это не влияет, если у тебя уже есть аккаунт в таблице userz, то регистрация не требуется. Если нету, то напишет неверный логин или пароль.
Ошибки выполнения php скриптов можно вывести флагами.
//Error_Reporting(E_ALL | E_STRICT);
//Ini_Set('display_errors', true);

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

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

Таблицы нет, она не создается автоматически (права есть).
Ланчер пишет "Ошибка подключения"
 
Таблицы нет, она не создается автоматически (права есть).
Ланчер пишет "Ошибка подключения"
Для работы без аккаунтов кмс создается accounts таблица. Что тебе там еще надо создавать, понятия не имею.
 
Для работы без аккаунтов кмс создается accounts таблица. Что тебе там еще надо создавать. понятия не имею.
я запутался.
У меня уже существует таблица users, которую мне крайне не хотелось бы менять. На нее завязан майн, текущий ланчер и сайт.

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

Шифрование я не использую. Как быть?
Ее не нужно менять, от туда берутся только аккаунты. Остальное пишется в usersession. В таблицу аккаунтов ничего не записывется, если отключить регу с лаунчера.
 
Ее не нужно менять, от туда берутся только аккаунты. Остальное пишется в usersession. В таблицу аккаунтов ничего не записывется, если отключить регу с лаунчера.
Значит надо отключить регу в ланчере? Сейчас, если эклипс установится, попробую, отпишусь.
 
Я выключалку реги на php недописал, кек. Перекачаешь connect.php и reg.php.
Ок.
На убунту ланчер из еклипса не стартует, не видет 8ю яву, хотя только что поставил.
Придется ждать до вечера(
 
Да он хоть на 6той собирается. Не имеет значения.
Что-то не идет...

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)


ОТБОЙ, завелся
 
Что-то не идет...

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)


ОТБОЙ, завелся
Ты на какой жабе собираешь то? :D
 

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

Назад
Верх