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

Мод [1.7.10] Заходим на сервер по клику на кнопку "Мультиплеер"

Тема в разделе "Модификации клиента", создана пользователем Alex2772, 20 июн 2015.

  1. Автор темы
    Alex2772

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

    Баллы:
    76
    Skype:
    alex277270
    Имя в Minecraft:
    Alex2772
    Скринщот_1.png
    Отличная фишка для серверов с одним сервером на один клиент. Игроки могут узнать онлайн вашего сервера, не заходя в меню выбора сервера (которого нет :creeper:)
    Плюхи:
    • Нет привязки к servers.dat
    • Русифицированные + кастомные сплешы ("Happy birthday, Notch!" -> "С Днём рождения, Notch!")
    • Можно жёстко задать текст сплеша вместо "олсо трай террария", "крипер из а спай" и т.д.
    • Вместо кнопки "Мультиплеер" будет показываться количество игроков на сервере
    • Полностью изменяемые тексты для меню, а также изменяемые цвета индикатора онлайна
    • Вместо кнопки "Minecraft Realms" - "Наш сайт"
    • У форджа отпадает желание добавлять свою информацию (но лайтлоадер все равно рисует свою курицу справа)
    UPD #1:
    • Фикс бага с клиентами с Forge
    • Обучил Minecraft этикету, теперь он здоровается в сплеше (если надо)
    • Автообновление онлайна (интервал задаётся в bee.class, по умолчанию 10 сек.)
    UPD #2:
    • Теперь можно задать текст для кнопки "Зайти на сервер" во время обновления. Укажите none, чтобы значение индикатора онлайна обновлялось "на лету"
    • Можно добавить ещё одну кнопку (для форума). Укажите none, чтобы она не появлялась.
    Настройки
    Изменять настройки с помощью InClassTranslator
    Ссылки для скачивания находятся внизу поста.
    Открываем и смотрим:
    Скринщот_3.png
    1. Текст слева - текст слева внизу (где был "Minecraft 1.7.10")
    2. Текст справа - текст справа внизу (где был копирайт)
    3. Кастом сплеш - сплеш (если указать helloPlayer - напишет "Привет, %имя%!")
    4. §aНаш сайт - кнопка "Наш сайт"
    5. Дальше идут кастомные сплеши -_-
    6. §7Зайти на сервер - мало ли, не загрузилось
    7. SuperServer - можете не изменять (указывался в качестве параметра для экземпляра класса ServerData)
    Листаем дальше:
    Скринщот_4.png
    1. 192.168.1.62 - IP сервера
    2. 25555 - порт сервера
    3. http://mysuperproject.ru - сайт сервера (укажите none - кнопка не появится)
    4. §a - цвет цифр у индикатора онлайна
    5. §2 - цвет разделителя (слеша) у индикатора онлайна
    Новые значения:
    1. http://forum.mysuperproject.ru/ -ссылка для дополнительной кнопки (укажите none - кнопка не появится)
    2. §7Обновление... - значение для кнопки захода на сервер во время обновления (укажите none, чтобы оставался индикатор во время обновление онлайна "на лету")
    3. §1Форум - текст для дополнительной кнопки
    После настройки закидываем в главный джарник Minecraft'а и радуемся :nerd:


    Объяснять, как декомпилировать Minecraft я не буду, ибо в интернете тысячи гайдов по этому поводу. Я расскажу как сделать заход на сервер по клику (если вы не хотите использовать чужие классы).
    1. Для начала откроем класс net.minecraft.client.gui.GuiMainMenu
    2. id кнопки "Мультиплеер" - 2 (в Minecraft 1.7.10), значит ищем условие if (p_146284_1_.id == 2) в методе actionPerformed().
    3. Мы видим, что вызывается метод this.mc.displayGuiScreen, и в качестве параметра GuiScreen указывается экземпляр класса GuiMultiplayer.
    4. Мы меняем с new GuiMultiplayer() на new GuiConnecting(). Если ругается (подчёркивает) GuiConnecting(), просто наведите на него мышкой, появится контекстное меню и выберите Add import.
    5. В параметрах GuiConnecting() укажите:
      1. this
      2. this.mc
      3. new ServerData(). Если ругается, проделайте тоже самое, что и с GuiConnecting().
    6. new ServerData() - это экземпляр класса ServerData, который будет хранить данные для подключения к серверу. В его параметрах укажите:
      1. "Название сервера"
      2. "IP_СЕРВЕРА:ПОРТ"
    7. Компилируем Minecraft и любуемся на своё творение..)
    Как надо:
    Код:
    this.mc.displayGuiScreen(new GuiConnecting(this, this.mc, new ServerData("SuperServer", "localhost:25565")));
    Как не надо :creeper::
    Код:
    this.mc.displayGuiScreen(new подключитсяКСерву(new Сервер(айпи: localhost, порт: 25565)));
    Ничего сложного :rolleyes:
    //Если у Вас не получается, извините, юзайте готовые классы, я для кого компилировал?)
    Ту-Ду:
    1. Добавить возможность добавлять ещё одну кнопку (для форума)
    2. Чтобы было на сплеше написано " Привет, %ник%!"
    ЗЫ: Могут появится проблемы с улучшенными гуи и прочими творениями зарубежных программистов. Лучше делайте что-то своё, чтобы ваш проект стал уникальным. Установить, например, BetterGUI может любой школьник, а вот "сделать что-то своё", или хотя-бы делать на чьей-то основе (для чего я и выкладываю сурцы своих работ) - это уже другое дело. Не злоупотребляйте донатом, люди не любят, чтобы везде висело "> Донат <", "Донат услуги - хттп://суперпроект.ру/донат" и тому подобные вещи. Не продавайте админки, модерки - это в целом ухудшит представление о вашем проекте, если вы даёте управлять сервером за деньги. Люди не будут донатить и вообще играть на таких серверах. На качественно сделанных серверах люди сами начнут донатить, а не делать это только благодаря надписи "данат эта харашо данатте пажалуста на нащих серверах эта помащ нам таким образам ви падержываите ващ любимый сирвир) > данат < "

    Хост лёг, осталось только 1.7.10: http://rubukkit.org/threads/1-6-4-1...-knopku-multipleer.105390/page-7#post-1380380
    Установка:
    1. Распакуйте все файлы в любую папку;
    2. Измените, как Вам надо, bee.class/blt.class;
    3. Залейте с заменой все классы в главный джарник Minecraft
    //Если я создал тему не в том разделе, переносите куда хотите.
     
    Последнее редактирование: 6 фев 2018
  2. alexandrage

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

    Баллы:
    173
    А что мешает несколько кнопок сделать? Я так до 4х помещал). Еще была идея с выпадающим боксом запилить.
     
  3. Автор темы
    Alex2772

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

    Баллы:
    76
    Skype:
    alex277270
    Имя в Minecraft:
    Alex2772
    Можно добавить кнопку для форума. Сурцы есть, ручки есть, ну и знания жабы тоже есть..)
    А с выпадающим боксом тоже идея неплохая. Но мне кажется выпадающий бокс делать если серверов больше 3-х, а так разделить плоскость на 2 части и засунуть туда кнопки, типа Hi-Tech #1 */* ; Hi-Tech #2 */*. Но у меня хайтеч один, мне это не надо) :rolleyes:
     
  4. RedFoo_17

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

    Баллы:
    76
    было бы неплохо сделать авто-обновление онлайна
     
  5. Автор темы
    Alex2772

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

    Баллы:
    76
    Skype:
    alex277270
    Имя в Minecraft:
    Alex2772
    Прикручу в следующем обновлении. Хотя, что уж там дописывать? Создаём новый поток и туда вставлем апдейтор инфы о сервере и заморозку (на 20 секунд сойдёт). А сейчас разбираюсь со скинами в Minecraft 1.7.10 на лаунчере от @alexandrage. Чёт не пашет -_-
     
  6. FlashFix

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

    Баллы:
    76
    Skype:
    dev-null19
    Имя в Minecraft:
    FlashFix
    на 1.6.4 есть?
     
  7. Автор темы
    Alex2772

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

    Баллы:
    76
    Skype:
    alex277270
    Имя в Minecraft:
    Alex2772
    Пока нет. Завтра сделаю, если время будет..)
    В связи с проблемами на Minecraft 1.7.10 в связке с Forge заходит только со второго раза. Когда делал подобный класс для своего проекта (тогда он был на 1.6.4) такой проблемы не было даже в связке с Forge.
     
  8. RedFoo_17

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

    Баллы:
    76
    ммм.. заходит с первого раза (1.7.10 Forge 10.13.4.1472)
     
  9. Автор темы
    Alex2772

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

    Баллы:
    76
    Skype:
    alex277270
    Имя в Minecraft:
    Alex2772
    Попробую обновится, если получится напишу в шапку
     
  10. RedFoo_17

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

    Баллы:
    76
    если можете, добавьте пожалуйста автообновление онлайна, или напишите код какой добавить..
     
  11. Автор темы
    Alex2772

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

    Баллы:
    76
    Skype:
    alex277270
    Имя в Minecraft:
    Alex2772
    Обнову запилю, код обновления каждые пять сек залью в шапку.
    @RedFoo_17, скиньте свои либы авторизации. Может, в них проблема? :) Или вы используйте либы от Сашка?
     
  12. RedFoo_17

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

    Баллы:
    76
    у нас самописный лаунчер
     
  13. Автор темы
    Alex2772

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

    Баллы:
    76
    Skype:
    alex277270
    Имя в Minecraft:
    Alex2772
    Фордж как загружается?
     
  14. FlashFix

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

    Баллы:
    76
    Skype:
    dev-null19
    Имя в Minecraft:
    FlashFix
    Alex2772, а когда ты сделаешь 1.6.4?
     
  15. Автор темы
    Alex2772

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

    Баллы:
    76
    Skype:
    alex277270
    Имя в Minecraft:
    Alex2772
    Хочу профиксить баг с заходом на сервер с Forge, на 1.6.4 такого бага не было
     
  16. alexandrage

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

    Баллы:
    173
    Просто ты рак! FMLClientHandler.instance().connectToServer(new GuiMultiplayer(this), sd);
     
  17. FlashFix

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

    Баллы:
    76
    Skype:
    dev-null19
    Имя в Minecraft:
    FlashFix
    Alex2772, ок
     
  18. RedFoo_17

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

    Баллы:
    76
    ---- Minecraft Crash Report ----
    // Why did you do that?

    Time: 22.06.15 15:21
    Description: Initializing game

    java.lang.NumberFormatException: For input string: "2..:: "
    at java.lang.NumberFormatException.forInputString(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at java.lang.Integer.valueOf(Unknown Source)
    at net.minecraft.client.gui.GuiMainMenu.getOnlineMaxOnline(GuiMainMenu.java:633)
    at net.minecraft.client.gui.GuiMainMenu.func_73969_a(GuiMainMenu.java:269)
    at net.minecraft.client.gui.GuiMainMenu.func_73866_w_(GuiMainMenu.java:242)
    at net.minecraft.client.gui.GuiScreen.func_146280_a(GuiScreen.java:255)
    at net.minecraft.client.Minecraft.func_147108_a(Minecraft.java:808)
    at net.minecraft.client.Minecraft.func_71384_a(Minecraft.java:562)
    at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:878)
    at net.minecraft.client.main.Main.main(SourceFile:148)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28)


    A detailed walkthrough of the error, its code path and all known details is as follows:
    ---------------------------------------------------------------------------------------

    -- Head --
    Stacktrace:
    at java.lang.NumberFormatException.forInputString(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at java.lang.Integer.valueOf(Unknown Source)
    at net.minecraft.client.gui.GuiMainMenu.getOnlineMaxOnline(GuiMainMenu.java:633)
    at net.minecraft.client.gui.GuiMainMenu.func_73969_a(GuiMainMenu.java:269)
    at net.minecraft.client.gui.GuiMainMenu.func_73866_w_(GuiMainMenu.java:242)
    at net.minecraft.client.gui.GuiScreen.func_146280_a(GuiScreen.java:255)
    at net.minecraft.client.Minecraft.func_147108_a(Minecraft.java:808)
    at net.minecraft.client.Minecraft.func_71384_a(Minecraft.java:562)

    -- Initialization --
    Details:
    Stacktrace:
    at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:878)
    at net.minecraft.client.main.Main.main(SourceFile:148)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28)

    я как понял, данный класс не поддерживает спец.символы
    upload_2015-6-22_21-52-51.png
     
  19. Автор темы
    Alex2772

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

    Баллы:
    76
    Skype:
    alex277270
    Имя в Minecraft:
    Alex2772
    Он их поддерживает, но некоторые значения (например порт сервера) специально сделаны String'ами (да бы ICT их увидел), а в некоторых участках кода они преобразуются в целые числа.
    Над вторым багом я работаю, щас спину фикс для клиентов с форджем.
    Если человек что-то фиксит, то он рак?)
    Код:
    if (user.getAction()=="fixes") user.setRank("Рак");
    Я правильно понимаю? :)
     
  20. tacos912

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

    Баллы:
    78
    Имя в Minecraft:
    tacos912
    В курсе, что в новых версиях форжа новый метод?
     

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