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

Утилита Minecraft Reverse Kit (JavaFX)

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем gamerforEA, 8 июн 2014.

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

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

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Minecraft Reverse Kit
    Данная утилита позволяет деобфусцировать и декомпилировать большинство модификаций в пару кликов.
    1) Распаковываем MRK в любую директорию.
    2) Запускаем 'MRK.bat'.
    3) Выбираем модификацию.
    4) Выбираем версию Minecraft.
    5) Нажимаем на кнопку 'Реверс'.
    6) Ждём завершения процесса.
    7) Получаем деобфусцированный мод и его исходный код в папке 'reverse', которая расположена в корневой директории мода.

    [​IMG]

    [​IMG]

    07.06.2014:
    • Релиз
    08.06.2014_0:
    • Исправлен баг с частичной деобфускацией
    • Деобфускация и декомпиляция вынесены в отдельный поток
    08.06.2014_1:
    • Улучшена работа с потоками
    09.06.2014:
    • Рефакторинг кода
    • Добавлена поддержка MC 1.7.2
    • Бинарники MC теперь хранятся в ZIP архивах
    10.06.2014:
    • Бинарники MRK и библиотеки упакованы в один JAR'ник
    • Методы 'Button.onAction' перенесены в классы
    12.06.2014_0:
    • Добавлен .sh скрипт для запуска MRK в *nix системах (запуск тестировался на Linux Kubuntu)
    12.06.2014_1:
    • Исправлен баг с 'NullPointerException' в 'FileChooser'.

    • 1.4.7
    • 1.5.2
    • 1.6.2
    • 1.6.4
    • 1.7.2

    Бинарники: нажми меня.
    Исходный код: нажми меня.

    Внесение изменений в мод с помощью MRK и MCP

    1) Устанавливаем Oracle JDK командами:
    Код:
    sudo add-apt-repository ppa:webupd8team/java
    sudo apt-get update && sudo apt-get install oracle-jdk7-installer
    2) Запускаем в терминале файл 'MRK.sh'.
    Java 8 не поддерживается!
     
    Последнее редактирование: 12 июн 2014
    Лайка3, BeYkeR, Mr_RoboMan и 11 другим нравится это.
  2. Автор темы
    gamerforEA

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

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Буду благодарен, если кто-нибудь подскажет, как это всё утрамбовать в .jar так, чтобы всё работало. Если работать через .jar, то криво определяется путь к моду.
    Код:
    ─Деобфускация мода...
    MCP directory doesn't exist: C:\Users\gamerforEA\Desktop\file:\C:\Users\gamerfor
    EA\Desktop\MRK.jar!\mcp\1.4.7
    Reference file doesn't exist: C:\Users\gamerforEA\Desktop\file:\C:\Users\gamerfo
    rEA\Desktop\MRK.jar!\mcp\1.4.7\bin.zip
    ─Деобфускация завершена.
    ─Декомпиляция мода...
    ERROR: Archive file or some parts of its content invalid: minecraft.jar
    java.io.FileNotFoundException: C:\Users\gamerforEA\Desktop\reverse\deobf\minecra
    ft.jar (═х єфрхЄё  эрщЄш єърчрээ√щ Їрщы)
            at java.io.FileInputStream.open(Native Method)
            at java.io.FileInputStream.<init>(Unknown Source)
            at cP.a(Unknown Source)
            at de.fernflower.main.decompiler.ConsoleDecompiler.copyFile(Unknown Sour
    ce)
            at cZ.a(Unknown Source)
            at i.b(Unknown Source)
            at cl.a(Unknown Source)
            at de.fernflower.main.decompiler.ConsoleDecompiler.decompileContext(Unkn
    own Source)
            at de.fernflower.main.decompiler.ConsoleDecompiler.main(Unknown Source)
            at mrk.utils.DeobfDecomp.decomp(DeobfDecomp.java:32)
            at mrk.utils.DeobfDecomp.deobf(DeobfDecomp.java:26)
            at mrk.ui.controllers.Center.startReverse(Center.java:60)
            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 sun.reflect.misc.Trampoline.invoke(Unknown Source)
            at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
            at java.lang.reflect.Method.invoke(Unknown Source)
            at sun.reflect.misc.MethodUtil.invoke(Unknown Source)
            at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(Unknown So
    urce)
            at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(Unkn
    own Source)
            at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknow
    n Source)
            at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknow
    n Source)
            at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(U
    nknown Source)
            at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Sourc
    e)
            at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Sou
    rce)
            at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Sourc
    e)
            at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Sou
    rce)
            at com.sun.javafx.event.EventUtil.fireEventImpl(Unknown Source)
            at com.sun.javafx.event.EventUtil.fireEvent(Unknown Source)
            at javafx.event.Event.fireEvent(Unknown Source)
            at javafx.scene.Node.fireEvent(Unknown Source)
            at javafx.scene.control.Button.fire(Unknown Source)
            at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(Un
    known Source)
            at com.sun.javafx.scene.control.skin.SkinBase$4.handle(Unknown Source)
            at com.sun.javafx.scene.control.skin.SkinBase$4.handle(Unknown Source)
            at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(Unkn
    own Source)
            at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknow
    n Source)
            at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknow
    n Source)
            at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(U
    nknown Source)
            at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Sourc
    e)
            at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Sou
    rce)
            at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Sourc
    e)
            at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Sou
    rce)
            at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Sourc
    e)
            at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Sou
    rce)
            at com.sun.javafx.event.EventUtil.fireEventImpl(Unknown Source)
            at com.sun.javafx.event.EventUtil.fireEvent(Unknown Source)
            at javafx.event.Event.fireEvent(Unknown Source)
            at javafx.scene.Scene$MouseHandler.process(Unknown Source)
            at javafx.scene.Scene$MouseHandler.process(Unknown Source)
            at javafx.scene.Scene$MouseHandler.access$1900(Unknown Source)
            at javafx.scene.Scene.impl_processMouseEvent(Unknown Source)
            at javafx.scene.Scene$ScenePeerListener.mouseEvent(Unknown Source)
            at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotificatio
    n.run(Unknown Source)
            at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotificatio
    n.run(Unknown Source)
            at java.security.AccessController.doPrivileged(Native Method)
            at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(Unkn
    own Source)
            at com.sun.glass.ui.View.handleMouseEvent(Unknown Source)
            at com.sun.glass.ui.View.notifyMouse(Unknown Source)
            at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
            at com.sun.glass.ui.win.WinApplication.access$100(Unknown Source)
            at com.sun.glass.ui.win.WinApplication$3$1.run(Unknown Source)
            at java.lang.Thread.run(Unknown Source)
    ─Декомпиляция завершена.
     
    Лайка3, Mr_RoboMan, Кувырок и 3 другим нравится это.
  3. Naviom

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

    Баллы:
    103
    Имя в Minecraft:
    Navion
    Давно искал. Лайк :good:
    Наконец то буду удалять предметы из модов =)
    Не мог бы сказать, а как обратно мод сделать?
     
    Лайка3, Mr_RoboMan, Кувырок и 3 другим нравится это.
  4. Автор темы
    gamerforEA

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

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Скоро будет видео.
     
    Лайка3, Mr_RoboMan, Javascript и 5 другим нравится это.
  5. Naviom

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

    Баллы:
    103
    Имя в Minecraft:
    Navion
    Хорошо жду
     
    Penek28123123, Лайка3, Mr_RoboMan и 3 другим нравится это.
  6. Sirse

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

    Баллы:
    173
    Имя в Minecraft:
    Sirse
    Пилять. Мою идею украли :D
    А зачем вы тащите за собой JavaFX? Программу внутри не смотрел, времени нету, просто мельком глянул используемые либы
    И покажите как определяете путь к моду.
     
    Penek28123123, Лайка3, Mr_RoboMan и 5 другим нравится это.
  7. Автор темы
    gamerforEA

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

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Просто у JRE JavaFX не висит в основном ClassPath, вот и приходиться подключать вручную.
    Если вы про передачу пути в BON, то я просто содержимое текстового поля передаю в массив строк метода main, а если про кнопку 'Выбрать', то я использую FileChooser с передачей пути к файлу в текстовое поле.
     
    Последнее редактирование: 8 июн 2014
  8. Dereku

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

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    C jre8 уже в основном.
     
  9. Автор темы
    gamerforEA

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

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Не у всех сейчас JRE 8.
    Хммм... Я нашёл баг - иногда происходит лишь частичная деобфускация. Работаю над исправлением ошибки.
    Обновление 08.06.2014_0:
    • Исправлен баг с частичной деобфускацией
    • Деобфускация и декомпиляция вынесены в отдельный поток

    Обновление 08.06.2014_1:
    • Улучшена работа с потоками

    Как и обещал, вот пример изменения мода Minecraft:

    Java 8 не поддерживается.
     
  10. Dereku

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

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Да ти лах.
     
  11. Naviom

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

    Баллы:
    103
    Имя в Minecraft:
    Navion
    А не подскажешь к примеру как не изменить крафт, а удалить это сундук ?
     
  12. Автор темы
    gamerforEA

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

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Надо лишь найти строку, где этот предмет добавляется в ItemStack (вроде), и удалить её.
    Обновление 09.06.2014:
    • Рефакторинг кода
    • Добавлена поддержка MC 1.7.2
    • Бинарники MC теперь хранятся в ZIP архивах
     
    MaxBukkit, Лайка3, RikkiL00k и 7 другим нравится это.
  13. Naviom

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

    Баллы:
    103
    Имя в Minecraft:
    Navion
    Помоги плиз а почему раньше у меня норм грузилось MCP MINecraft а теперь нет вот log

    Код:
    ================ Forge ModLoader Setup Start ===================
    MCP Detected already, not downloading
    Setting up MCP
    Patching commands.py
    patching file commands.py
        Commands patch applied successfully
    Copying FML conf
    Creating Repackaged data
        Creating re-packaged srg
        Creating re-packaged exc
        Creating re-packaged MCP patches
    Downloading 42 libraries
    Backing up client
    Backing up server
    Download of minecraft_server.1.6.4.jar failed hash check, deleting abcf286a14f7a
    ee82e8bf89270433509 ba3145656b1480122bd8759cecd7b7a1
    Something failed verifying minecraft files, see log for details.
    Decompile Exception: 1
    Для продолжения нажмите любую клавишу . . .
    
    
    
    
    
     
  14. Автор темы
    gamerforEA

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

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    http://www.rubukkit.org/threads/mcp-failed-hash-check.68203/
     
    LaikoMen228, herobrine1hosting, MaxBukkit и 11 другим нравится это.
  15. Naviom

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

    Баллы:
    103
    Имя в Minecraft:
    Navion
  16. Автор темы
    gamerforEA

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

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Это был лишь пример. У разных модов всё находится в разных классах.
     
  17. RedEnergy

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

    Баллы:
    103
  18. Автор темы
    gamerforEA

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

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Похоже, что проблема не в MRK. Для начала попробуйте обновить JRE. Если это не поможет, то напишите, какая у вас Windows и JRE.
    UPD_0: Сейчас поработаю над поддержкой JRE 8.
     
  19. RedEnergy

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

    Баллы:
    103
    Win7 Max SP1, JRE 1.7.0_21, JDK установлен соответственно
     
  20. Dereku

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

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Чтобы не тащить за собой JavaFX библиотеки, юзай javafxpackager.
     

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