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

Туториал Делаем лаунчер для своего сервера

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем Ccc, 28 дек 2012.

  1. WhiteSS

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

    Баллы:
    103
    Там должна быть папка bin(в client,zip) а в ней minecraft.jar+3 файлика lwjgl и прочее+папка natives
     
    Сникерсни нравится это.
  2. Markls1

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

    Баллы:
    123
    Skype:
    mistercraftg
    Имя в Minecraft:
    MarklsDidle
  3. Markls1

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

    Баллы:
    123
    Skype:
    mistercraftg
    Имя в Minecraft:
    MarklsDidle
  4. WhiteSS

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

    Баллы:
    103
    хммм.странно
     
  5. Markls1

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

    Баллы:
    123
    Skype:
    mistercraftg
    Имя в Minecraft:
    MarklsDidle
    Странно то. Когда захожу со старого лаунчера он заходит. В среде Еклипс он тоже заходит, после компиляции не заходит)
     
  6. egor26333

    egor26333 Активный участник

    Баллы:
    68
    Имя в Minecraft:
    egor26333
    Здравствуйте, у меня вопрос, а как сделать так, что бы лаунчер sashok724 скачивал моды BuildCraft, IndustrialCraft и т.д, и что бы они (естественно) работали?
     
  7. Markls1

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

    Баллы:
    123
    Skype:
    mistercraftg
    Имя в Minecraft:
    MarklsDidle
    Их нужно поместить в клиент
    Меня интересует как сделать выбор сервера и загрузка к нему модов
     
  8. WhiteSS

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

    Баллы:
    103
    ап
    Пиши скайп
     
  9. egor26333

    egor26333 Активный участник

    Баллы:
    68
    Имя в Minecraft:
    egor26333
    Помогите кто-нибудь. Я еще понял что клиент использует стандарт ную папку .minecraft где исправить что бы было по пути проект/HiTech?
     
  10. REZAYS

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

    Баллы:
    153
    При любом нике и пароле меня пускает в игру.Можете сказать,что я не так сделал или выкладывать конфиги?
     
  11. REZAYS

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

    Баллы:
    153
    java.io.FileNotFoundException: C:\Users\monk23\AppData\Roaming\.P\bin\[<a (Синтаксическая ошибка в имени файла, имени папки или метке тома)
    Fatal error occured (4): C:\Users\monk23\AppData\Roaming\.P\bin\[<a (Синтаксическая ошибка в имени файла, имени папки или метке тома)
    at java.io.FileOutputStream.open(Native Method)
    at java.io.FileOutputStream.<init>(Unknown Source)
    at java.io.FileOutputStream.<init>(Unknown Source)
    at ru.maximusorg.launcher.GameUpdater.downloadJars(GameUpdater.java:442)
    at ru.maximusorg.launcher.GameUpdater.run(GameUpdater.java:241)
    at ru.maximusorg.launcher.Launcher$1.run(Launcher.java:84)
    java.io.FileNotFoundException: C:\Users\monk23\AppData\Roaming\.P\bin\[<a (Синтаксическая ошибка в имени файла, имени папки или метке тома)
    at java.io.FileOutputStream.open(Native Method)
    at java.io.FileOutputStream.<init>(Unknown Source)
    at java.io.FileOutputStream.<init>(Unknown Source)
    at ru.maximusorg.launcher.GameUpdater.downloadJars(GameUpdater.java:442)
    at ru.maximusorg.launcher.GameUpdater.run(GameUpdater.java:241)
    at ru.maximusorg.launcher.Launcher$1.run(Launcher.java:84)
    Вот.
    или вот.
    java.lang.ArrayIndexOutOfBoundsException
     
  12. MrZer

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

    Баллы:
    78
    Проблема с Launcher'ом "сашка".

    I. При конекте к серверу:
    1.В окне игры пишет:
    а)Если обычный пользователь - "Not premium user"
    б)Если поставить премиум - "Bad Login"
    2.В командной строке сервера пишет - "Nickname IP - соединение потеряно"

    II. Думаю проблема в sql, но найти никак не могу.

    Подскажите пожалуйста, где может быть загвоздка.
     
  13. Автор темы
    Ccc

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

    Баллы:
    153
    Skype:
    Dyadyasasha1234
    Имя в Minecraft:
    Dyadyasasha1234
    Not premium user и Bad Login появляется когда сервер не настроен под твою систему авторизации(не изменена ссылка на файл checkserver.php) и online mod:true
    Попробуй поменять online mod на false или настрой так,как сказано здесь
     
    Василий Гейдарович и MrZer нравится это.
  14. Автор темы
    Ccc

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

    Баллы:
    153
    Skype:
    Dyadyasasha1234
    Имя в Minecraft:
    Dyadyasasha1234
    выложи конфиги и скажи какой лаунчер использовал
     
  15. Автор темы
    Ccc

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

    Баллы:
    153
    Skype:
    Dyadyasasha1234
    Имя в Minecraft:
    Dyadyasasha1234
    скинь файлы,которые заливал на сайт
     
  16. Автор темы
    Ccc

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

    Баллы:
    153
    Skype:
    Dyadyasasha1234
    Имя в Minecraft:
    Dyadyasasha1234
    вы лаунчере отредактировать название папки и в клиенте в minecraft.jar в папке net/minecraft/client/файл Minecraft.class нужно отредактировать через InClassTranslator
    так делал?
     
    Василий Гейдарович нравится это.
  17. REZAYS

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

    Баллы:
    153
    Лаунчер от maximusorg

    auth.php
    <?php

    require_once('../system.php');
    $str = '';

    if (!empty($_POST['user']) and !empty($_POST['password']) and !empty($_POST['version'])) {


    require_once('../instruments/password.php');

    $login = $_POST['user'];
    $password = $_POST['password'];
    $ver = $_POST['version'];

    if (!preg_match("/^[a-zA-Z0-9_-]+$/", $login)) {

    $str = "Login process [Bad symbols Login] ";
    echo "Bad login";

    } elseif (!preg_match("/^[a-zA-Z0-9_-]+$/", $password)) {

    $str = "Login process [Bad symbols Password] ";
    echo "Bad login";

    } elseif (!preg_match("/^[0-9]+$/", $ver)) {

    $str = "Login process [Bad symbols Version] ";
    echo "Bad login";

    } elseif (getGameInfo('launcher') == $ver) {

    $result = BD("SELECT $bd_aPassword,$bd_aUsername,$bd_aLvl FROM $bd_table_accounts WHERE $bd_aUsername='$login'");

    $line = mysql_fetch_array($result);

    if (!$line) {
    vtxtlog("Login process [Unknown user] User [$login] Password [$password]");
    echo "Bad login";
    exit;
    }

    $user_lvl = $line[$bd_aLvl];

    if ($user_lvl <= 0) {

    $str = "Login process [Banned user] User [$login] Password [$password]";
    echo "Bad login";

    } else {

    $realPass = $line[$bd_aPassword];
    $orig_login = $line[$bd_aUsername];

    if (checkPass($realPass,$password))
    {
    $sessid = generateSessionId();
    $gamebuild = getGameInfo('build');

    BD("UPDATE $bd_table_accounts SET $bd_aSession='$sessid' WHERE $bd_aUsername='$login'");

    $dlticket = md5($orig_login);
    echo $gamebuild.':'.$dlticket.':'.$orig_login.':'.$sessid.':';
    $str = "Login process [Success] User [$login] Session [$sessid]";
    } else {
    $str = "Login process [Bad login] User [$login] Password [$password]";
    echo "Bad login";
    }
    }

    } else {
    $str = "Login process [Old version]";
    echo 'Old version';
    }

    } else {

    $str = "Login process [POST parameter empty] ";
    if (empty($_POST['user'])) $str .= "LOGIN parameter is empty | ";
    if (empty($_POST['password'])) $str .= "PASSWORD parameter is empty";
    if (empty($_POST['version'])) $str .= "VER parameter is empty";

    echo "Bad login";

    }

    vtxtlog($str);

    ?>
    config.java
    package ru.maximusorg.launcher;

    public class Config {
    public static String StrDown1 = "http://paradyse.ru/lk/upload/update/";
    public static String StrDown2 = "http://paradyse.ru/lk/upload/update/";
    public static String StrDown3 = "http://paradyse.ru/lk/upload/update/";
    public static String StrDown4 = "http://paradyse.ru/lk/upload/update/";
    public static String StrDown5 = "http://paradyse.ru/lk/upload/update/";
    public static String StrDown6 = "http://paradyse.ru/lk/upload/update/";
    public static String StrDown = "http://paradyse.ru/lk/upload/update/";
    public static String regURL = "http://paradyse.ru";

    //Название вашего лаунчера
    public static String title = "Paradyse.ru launcher";
    //версия лаунчера
    public static String version = "16";
    //Авторизация
    public static String auth = "http://paradyse.ru/lk/upload/auth.php?user=";
    //IP вашего сервера
    public static String serverip1 = "paradyse.dlinkddns.com";
    //Порт вашего сервера
    public static String serverport1 = "25565";
    //Загрузка новостей
    public static String news = "http://paradyse.ru/news/";
    //Регистрация
    public static String register = "http://paradyse.ru";
    //Откуда скачивать новый лаунчер
    public static String newlauncher = "http://paradyse.ru/launcher.exe";
    public static String server = "1";
    public static String serverport2 = "25576";
    public static String serverport3 = "25577";
    public static String serverport4 = "25578";
    public static String serverport5 = "25579";
    public static String serverport6 = "25580";
    public static String name = "(Paradyse.ru by rezays and maximusorg)";
    public static String site = "http://paradyse.ru";
    public static String forum = "http://paradyse.ru";
    public static String skinsystem = "http://paradyse.ru/lk/";
    public static String workdir = "Paradyse";

    /**
    Лаунчер сделан maximusorg, все вопросы по нему, а также настройка в скайп - K.N.A.Z
    */








    }

    package ru.maximusorg.launcher;

    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Frame;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.io.BufferedInputStream;
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.URL;
    import java.net.URLEncoder;
    import java.security.DigestInputStream;
    import java.security.MessageDigest;
    import java.util.Formatter;
    import java.util.HashMap;
    import java.util.Map;
    import javax.imageio.ImageIO;
    import javax.swing.JPanel;
    import javax.swing.UIManager;

    public class LauncherFrame extends Frame
    {
    public static String calculateHash(MessageDigest algorithm,
    String fileName) throws Exception{
    FileInputStream fis = new FileInputStream(fileName);
    BufferedInputStream bis = new BufferedInputStream(fis);
    @SuppressWarnings("resource")
    DigestInputStream dis = new DigestInputStream(bis, algorithm);

    while (dis.read() != -1);
    byte[] hash = algorithm.digest();

    return byteArray2Hex(hash);
    }
    private static String byteArray2Hex(byte[] hash) {
    @SuppressWarnings("resource")
    Formatter formatter = new Formatter();
    for (byte b : hash) {
    formatter.format("%02x", b);
    }
    return formatter.toString();
    }


    public static final int VERSION = 16;
    private static final long serialVersionUID = 1L;
    public Map<String, String> customParameters = new HashMap<String, String>();
    public Launcher launcher;
    public LoginForm loginForm;

    public LauncherFrame()
    {


    super(Config.title);

    setBackground(Color.BLACK);
    loginForm = new LoginForm(this);
    JPanel p = new JPanel();
    p.setLayout(new BorderLayout());
    p.add(loginForm, "Center");

    p.setPreferredSize(new Dimension(854, 480));

    setLayout(new BorderLayout());
    add(p, "Center");

    pack();
    setLocationRelativeTo(null);
    try
    {
    setIconImage(ImageIO.read(LauncherFrame.class.getResource("favicon.png")));
    } catch (IOException e1) {
    e1.printStackTrace();
    }

    addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent arg0) {
    new Thread() {
    public void run() {
    try {
    Thread.sleep(30000L);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    System.out.println("FORCING EXIT!");
    System.exit(0);
    }
    }
    .start();
    if (launcher != null) {
    launcher.stop();
    launcher.destroy();
    }
    System.exit(0);
    } } );
    }

    public void playCached(String userName) {
    try {
    if ((userName == null) || (userName.length() <= 0)) {
    userName = "Player";
    }
    launcher = new Launcher();
    launcher.customParameters.putAll(customParameters);
    launcher.customParameters.put("userName", userName);
    launcher.init();
    removeAll();
    add(launcher, "Center");
    validate();
    launcher.start();
    loginForm = null;
    setTitle("Minecraft");
    } catch (Exception e) {
    e.printStackTrace();
    showError(e.toString());
    }
    }

    //--------------------------------
    // public String getFakeResult(String userName) {
    // return Util.getFakeLatestVersion() + ":35b9fd01865fda9d70b157e244cf801c:" + userName + ":12345:";
    // }
    //---------------------------------

    public void login(String userName, String password) {
    try {
    String parameters = "user=" + URLEncoder.encode(userName, "UTF-8") + "&password=" + URLEncoder.encode(password, "UTF-8") + "&version=" + (Config.version);
    String result = Util.excutePost(Config.auth, parameters);
    // String result = getFakeResult(userName);
    if (result == null) {
    showError("Невозможно подключится к серверу!");
    loginForm.setNoNetwork();
    return;
    }
    String applicationData = System.getenv("APPDATA");
    String f = applicationData + "/.paradyse/bin/minecraft.jar";

    try
    {

    MessageDigest md5 = MessageDigest.getInstance("MD5");
    String p = calculateHash(md5, f);


    URL localURL = new URL("http://paradyse.ru/no/minecraft/minecraft/md5.php?hash=" + p);
    BufferedReader localBufferedReader = new BufferedReader(new InputStreamReader(localURL.openStream()));
    String str2 = localBufferedReader.readLine();
    if (str2.equalsIgnoreCase("NO")){
    {
    GameUpdater.forceUpdate = true;
    }

    }
    else if (str2.equalsIgnoreCase("YES"))
    {
    }

    }
    и еще в папке bin появляются файлы без расширения:
    to
    version
    open
    и файлы с расширениями:
    system.php)
    stream&ticket=require_once(bd_con.php)



    catch(FileNotFoundException fnfn)
    {
    GameUpdater.forceUpdate = true;
    }




    if (!result.contains(":")) {
    if (result.trim().equals("Bad login")) {
    showError("Неправильный логин или пароль!");
    } else if (result.trim().equals("Старая версия лаунчера!")) {
    loginForm.setOutdated();
    showError("Нужно обновить лаунчер!");
    } else {
    showError(result);
    }
    loginForm.setNoNetwork();
    return;
    }
    String[] values = result.split(":");

    launcher = new Launcher();
    launcher.customParameters.putAll(customParameters);
    launcher.customParameters.put("userName", values[2].trim());
    launcher.customParameters.put("latestVersion", values[0].trim());
    launcher.customParameters.put("downloadTicket", values[1].trim());
    launcher.customParameters.put("sessionId", values[3].trim());
    launcher.init();

    if (LoginForm.server == "1") {
    launcher.customParameters.put("server", Config.serverip1);
    launcher.customParameters.put("port", Config.serverport1);}
    launcher.init();

    if (LoginForm.server == "2") {
    launcher.customParameters.put("server", Config.serverip1);
    launcher.customParameters.put("port", Config.serverport2);}
    launcher.init();

    if (LoginForm.server == "3") {
    launcher.customParameters.put("server", Config.serverip1);
    launcher.customParameters.put("port", Config.serverport3);}
    launcher.init();
    if (LoginForm.server == "4") {
    launcher.customParameters.put("server", Config.serverip1);
    launcher.customParameters.put("port", Config.serverport4);}
    launcher.init();
    if (LoginForm.server == "5") {
    launcher.customParameters.put("server", Config.serverip1);
    launcher.customParameters.put("port", Config.serverport5);}
    launcher.init();
    if (LoginForm.server == "6") {
    launcher.customParameters.put("server", Config.serverip1);
    launcher.customParameters.put("port", Config.serverport6);}
    launcher.init();



    removeAll();
    add(launcher, "Center");
    validate();
    launcher.start();
    loginForm.loginOk();
    loginForm = null;
    setTitle("Minecraft");
    } catch (Exception e) {
    e.printStackTrace();
    showError(e.toString());
    loginForm.setNoNetwork();
    }
    }

    private void showError(String error) {
    removeAll();
    add(loginForm);
    loginForm.setError(error);
    validate();
    }

    public boolean canPlayOffline(String userName) {
    Launcher launcher = new Launcher();
    launcher.customParameters.putAll(customParameters);
    launcher.init(userName, null, null, null);
    return launcher.canPlayOffline();
    }

    public static void main(String[] args) {
    try {
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    }
    catch (Exception localException) {
    }
    LauncherFrame launcherFrame = new LauncherFrame();
    launcherFrame.setVisible(true);
    launcherFrame.customParameters.put("stand-alone", "true");

    if (args.length >= 3) {
    String ip = args[2];
    String port = "25565";
    if (ip.contains(":")) {
    String[] parts = ip.split(":");
    ip = parts[0];
    port = parts[1];
    }

    launcherFrame.customParameters.put("server", ip);
    launcherFrame.customParameters.put("port", port);
    }

    if (args.length >= 1) {
    launcherFrame.loginForm.userName.setText(args[0]);
    if (args.length >= 2) {
    launcherFrame.loginForm.password.setText(args[1]);
    launcherFrame.loginForm.doLogin();
    }
    }
    }
    }

    и еще несмотря на то что я файлы по фтп закинул,обновляет((
     
  18. egor26333

    egor26333 Активный участник

    Баллы:
    68
    Имя в Minecraft:
    egor26333
    Да, извините забыл написать, что теперь все сохроняет в нужную мне папку, а как сделать теперь, что бы работали моды? У меня в minecraft.jar стоит forge папку META-INF я удалил, когда я закачиваю на хостинг в папку mods мод, при загрузке minecraft черный экран. В client.zip две папки mods и bin. P.S у меня minecraft 1.4.6
     
  19. REZAYS

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

    Баллы:
    153
    Ошибка при обновлении лаунчера-
    Exception in thread "Thread-5" java.lang.SecurityException: SHA1 digest error for bag.class
    at sun.security.util.ManifestEntryVerifier.verify(Unknown Source)
    at java.util.jar.JarVerifier.processEntry(Unknown Source)
    at java.util.jar.JarVerifier.update(Unknown Source)
    at java.util.jar.JarVerifier$VerifierStream.read(Unknown Source)
    at sun.misc.Resource.getBytes(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$100(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$100(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at net.minecraft.client.MinecraftApplet.init(SourceFile:38)
    at ru.maximusorg.launcher.Launcher.replace(Launcher.java:143)
    at ru.maximusorg.launcher.Launcher$1.run(Launcher.java:87)
    Нативсы скачивал с Офф сайта,все правильно настроил.С чем это может быть связано?
     
  20. Markls1

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

    Баллы:
    123
    Skype:
    mistercraftg
    Имя в Minecraft:
    MarklsDidle
    Mistercraftg
     

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