Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление
  2. Данный раздел создан исключительно для релизов! Вопросы по лаунчеру или обвязке задавайте ТОЛЬКО в соответсвующей теме автора. Любые другие темы будут удалены, а авторы понесут наказание.

Лаунчер [0.3 BETA]MCWLauncher (Мой первый лаунчер) + Web

Тема в разделе "Веб-обвязки и лаунчеры", создана пользователем danilko, 24 авг 2014.

?

Нужен ?

  1. Да

    108 голосов
    56,5%
  2. Нет

    40 голосов
    20,9%
  3. Без разницы

    43 голосов
    22,5%
  1. Konstantin773

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

    Баллы:
    153
    Skype:
    Konstantin77313
    Имя в Minecraft:
    K773
    У меня под Java 8 на Win7 никак не хочет запускаться 1.6.x+ через launchwrapper. ConcurentModificationException в цикле итерации возникает.
     
  2. Хостинг MineCraft
    <
  3. UncleFedor

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

    Баллы:
    61
    Упс. Это не интересно.
     
  4. Автор темы
    danilko

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

    Баллы:
    103
    JDK не помню с какой версии умеет создавать "родные пакеты" под винду (exe\msi), по этому просто делаем такой пакет, даем игроку, а там по схеме "Далее-далее-готово" и кликаем на ярлычек.

    Забыл вчера написать про подключение игры, сейчас минут через 5 будет.[DOUBLEPOST=1409743869,1409742654][/DOUBLEPOST]В общем модифицируем клиент.
    Во-первых нужно сделать так, чтобы клиент брал файлы не из папки в AppData (или ещё где), а из папки куда он был загружен. (System.getProperty("user.home")+".MCWL"+File.separator+id , id = id_клиента_на_сайте)
    Далее нам нужно добавить класс gstarter, который и будет запускать игру.(Этот класс должен лежать в корне jar`ника ("пакет по умолчанию")).
    Код:
    import MCWL.IGameStarter;
    import javax.swing.JFrame;
    
    public class gstarter implements IGameStarter {
        @Override
        public void start(String login, String pass) {
            System.out.println("Game starter get call with user:\""+login+"\" and pass:\""+pass+"\"");
             JFrame frame = new JFrame();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(100, 100);
            frame.setLocationByPlatform(true);
            frame.setVisible(true);     
        }
      
    }
    
    В данном примере в консоль выводятся логин и пароль игрока, а потом создается окошко.(т.к. разные версии стартуют по разному, то вам придется переделать этот пример под свой клиент, добавить авторизацию, получение сессии и т.д.)
    Данный класс реализует интерфейс IGameStarter из пакета "MCWL", найти его можно в лаунчере и при компиляции использовать лаунчер как библиотеку.
    После упаковываем наш клиент в обычный zip архив и размещаем его по адресу, который регистрировали.
    Теперь загрузка и запуск.[DOUBLEPOST=1409745022][/DOUBLEPOST][Стерлось...]
    Скачивание клиента
    Код:
    launcher.startDownloadZip(serverid)
    Проверка статуса загрузки (1-загрузка,2-распаковка,0-завершено)
    Код:
    launcher.getStatus()
    Запуск.(serverID - id сервера, file - путь до файла в архиве, login и pass, думаю, ясно что такое)
    Код:
    startGame(serverID, file, login, pass)
    Ну и все пока.[DOUBLEPOST=1409745996][/DOUBLEPOST]Свежий бинарник на всякий случай (-source 1.7 , т.е. под java 7 должно работать при наличии jfxrt.jar в classpath)
    http://mcwl.esy.es/download/0.1/MCWLauncher.jar[DOUBLEPOST=1409747844][/DOUBLEPOST]Почистил БД от лаунчеров "хацкирав".[DOUBLEPOST=1409769853][/DOUBLEPOST]Как лучше реализовать серверную чать: как мод(native/forge/modloader?) или как плагин ?(хотя, глядя на "time to say..." кажется, что скоро bukkit будет не актуален)
     
    Последнее редактирование: 3 сен 2014
  5. alexandrage

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

    Баллы:
    173
    Skype:
    alexandr0116
    Выложу сдесь мой TrueBat v.2 https://cloud.mail.ru/public/2342f2fea7ac/TrueBat-New.zip
    Может кому будет полезным для нормального запуска новых версий клиентов.
    Что он умеет? Парсит файлик versions/x.x.x.json и собирает валидную строку для запуска клиента, и потом запускает (При наличие нативов в /versions/x.x.x/natives).
     
  6. Evan

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

    Баллы:
    123
    windows 7 32-ух разрядная система, я сосу кароч
     
  7. Автор темы
    danilko

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

    Баллы:
    103
    jfx доустанови и норм будет или вообще обновись до восьмой java
     
  8. alexandrage

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

    Баллы:
    173
    Skype:
    alexandr0116
    Чувак смерись, не актуален твой недолаунчер. Это каждово школьника так лечить? Установи какой то там jfx или яву 8 :D
     
  9. Автор темы
    danilko

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

    Баллы:
    103
    Нет, я сделаю дозагрузку javafx при её отсутствии, просто мне пока некогда.
     
  10. sashabelii

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

    Баллы:
    123
    Имя в Minecraft:
    sashabelii
    javafx это ведь просто либа? Кинь ее содержимое в джарник с лаунчером и не заставляй всяких качать всякое, что первым скорее всего и не нужно.
     
  11. Автор темы
    danilko

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

    Баллы:
    103
    Там могут появиться проблемы с "переопределением" класса, т.е. когда в classpath два класса с одинаковым названием в одном пакете, по этому там надо сделать динамическое подключение библиотеки jfx я уже продумал как это реализовать, но никак до IDE времени добраться не хватает, сегодня, может быть, вечером сделаю.
     
  12. sashabelii

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

    Баллы:
    123
    Имя в Minecraft:
    sashabelii
    Сомневаюсь, что могут возникнуть проблемы. В любом случае, можно изменить названия пакетов. Например:
    org.myjavafx. ...

    Если верить сайту Oracle:
    As of JDK 7u6 JavaFX is included with the standard JDK and JRE bundles. Please download the JDK or JRE to use JavaFX.

    Как JavaFX вообще может отсутствовать, если она вшита в jre?
     
  13. Автор темы
    danilko

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

    Баллы:
    103
    Возможно, у многих стоит 7 ява ниже 6 апдейта, по этому и возникают проблемы.
    В любом случае я уже делаю мини-костыль для дозагрузки javafx при необходимости.
     
  14. sashabelii

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

    Баллы:
    123
    Имя в Minecraft:
    sashabelii
    У меня вот j7u60. И шото ничего не работает. Скорее всего проблема не в том.
     
  15. Автор темы
    danilko

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

    Баллы:
    103
    А что пишет ?(может сообщения какие выскакивают или в консоли что-то выводится)
     
  16. sashabelii

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

    Баллы:
    123
    Имя в Minecraft:
    sashabelii
    Что странно:
    Код:
    C:\Users\Alexandr\Desktop>java -jar MCWLauncher.jar
    Exception in thread "main" java.lang.NoClassDefFoundError: javafx/application/Ap
    plication
            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 sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
    Caused by: java.lang.ClassNotFoundException: javafx.application.Application
            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 sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            ... 13 more
    [DOUBLEPOST=1410080463,1410079902][/DOUBLEPOST]При чем jxfrt.jar лежит в lib'ах, а именно от туда(на сколько мне известно) грузятся абсолютно все jar-файлы.
    Советую погуглит по строке:
    "Caused by: java.lang.ClassNotFoundException: javafx.application.Application"
     
  17. Автор темы
    danilko

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

    Баллы:
    103
    Это как раз следствие того, что java не может найти в classpath класс "javafx/application/Application", который находится(должен) в той самой библиотеке jfxrt.jar (Возможно, это баг самой java, что библиотека есть, а в cp не добавляется, т.к. в каком-нибудь конфиге не прописали)
     
  18. sashabelii

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

    Баллы:
    123
    Имя в Minecraft:
    sashabelii
    Я не знаю, как задается classpatch, но советую проверить настройки сборки проекта. На этом форуме есть лаунчеры, которые рисуются с помощью JavaFX и весьма успешно, т.ч. Java тут скорее всего не при чем.
     
  19. Cyber Owl

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

    Баллы:
    153
    Пихай JFX насильно

    Код:
    public class Loader {
        public static void main(String[] args) {
            addToClasspath("file:///"+ File.separator +"*"+File.separator+"jfxrt.jar");
            Main.main(args);
        }
     
  20. Автор темы
    danilko

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

    Баллы:
    103
    + дофига к лагам при запуске (jre же будет искать все jfxrt.jar на компе)

    Я лучше сделаю try-catch на main и если будет ошибка, то делаю дозагрузку jfxtr и снова запускаю main
     
  21. sashabelii

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

    Баллы:
    123
    Имя в Minecraft:
    sashabelii
    Ну загугли же:
    Код:
    import org.fuin.utils4j.Utils4J
    
    public class Launcher {
    
        public static void main(String[] args) {
            Utils4J.addToClasspath("file:///"+System.getProperty("java.home")+ File.separator+"lib"+File.separator+"jfxrt.jar");
    
    // CODE TO RUN YOUR CLASS THAT EXTENDS javafx.application.Application goes here.
    
        }
    }
     

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