Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Dismiss Notice

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

Discussion in 'Руководства, инструкции, утилиты' started by gamerforEA, Jun 8, 2014.

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

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

    Trophy Points:
    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 командами:
    Code:
    sudo add-apt-repository ppa:webupd8team/java
    sudo apt-get update && sudo apt-get install oracle-jdk7-installer
    2) Запускаем в терминале файл 'MRK.sh'.
    Java 8 не поддерживается!
     
    Last edited: Jun 12, 2014
  2. Хостинг MineCraft
    <
  3. Автор темы
    gamerforEA

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

    Trophy Points:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Буду благодарен, если кто-нибудь подскажет, как это всё утрамбовать в .jar так, чтобы всё работало. Если работать через .jar, то криво определяется путь к моду.
    Code:
    ─Деобфускация мода...
    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)
    ─Декомпиляция завершена.
     
  4. Naviom

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

    Trophy Points:
    103
    Имя в Minecraft:
    Navion
    Давно искал. Лайк :good:[DOUBLEPOST=1402196939,1402196859][/DOUBLEPOST]Наконец то буду удалять предметы из модов =)[DOUBLEPOST=1402196988][/DOUBLEPOST]Не мог бы сказать, а как обратно мод сделать?
     
  5. Автор темы
    gamerforEA

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

    Trophy Points:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Скоро будет видео.
     
  6. Naviom

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

    Trophy Points:
    103
    Имя в Minecraft:
    Navion
    Хорошо жду
     
  7. Sirse

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

    Trophy Points:
    173
    Имя в Minecraft:
    Sirse
    Пилять. Мою идею украли :D[DOUBLEPOST=1402204304,1402204153][/DOUBLEPOST]А зачем вы тащите за собой JavaFX? Программу внутри не смотрел, времени нету, просто мельком глянул используемые либы[DOUBLEPOST=1402204410][/DOUBLEPOST]И покажите как определяете путь к моду.
     
  8. Автор темы
    gamerforEA

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

    Trophy Points:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Просто у JRE JavaFX не висит в основном ClassPath, вот и приходиться подключать вручную.[DOUBLEPOST=1402205901,1402204534][/DOUBLEPOST]
    Если вы про передачу пути в BON, то я просто содержимое текстового поля передаю в массив строк метода main, а если про кнопку 'Выбрать', то я использую FileChooser с передачей пути к файлу в текстовое поле.
     
    Last edited: Jun 8, 2014
  9. Dereku

    Dereku Старожил

    Trophy Points:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    C jre8 уже в основном.
     
  10. Автор темы
    gamerforEA

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

    Trophy Points:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Не у всех сейчас JRE 8.[DOUBLEPOST=1402208501,1402208357][/DOUBLEPOST]Хммм... Я нашёл баг - иногда происходит лишь частичная деобфускация. Работаю над исправлением ошибки.[DOUBLEPOST=1402222893][/DOUBLEPOST]Обновление 08.06.2014_0:
    • Исправлен баг с частичной деобфускацией
    • Деобфускация и декомпиляция вынесены в отдельный поток
    [DOUBLEPOST=1402235499][/DOUBLEPOST]Обновление 08.06.2014_1:
    • Улучшена работа с потоками
    [DOUBLEPOST=1402238315][/DOUBLEPOST]Как и обещал, вот пример изменения мода Minecraft:
    [DOUBLEPOST=1402245090][/DOUBLEPOST]Java 8 не поддерживается.
     
  11. Dereku

    Dereku Старожил

    Trophy Points:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Да ти лах.
     
  12. Naviom

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

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

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

    Trophy Points:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Надо лишь найти строку, где этот предмет добавляется в ItemStack (вроде), и удалить её.[DOUBLEPOST=1402311912,1402287703][/DOUBLEPOST]Обновление 09.06.2014:
    • Рефакторинг кода
    • Добавлена поддержка MC 1.7.2
    • Бинарники MC теперь хранятся в ZIP архивах
     
  14. Naviom

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

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

    Code:
    ================ 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
    Для продолжения нажмите любую клавишу . . .
    
    
    
    
    
     
  15. Автор темы
    gamerforEA

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

    Trophy Points:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    http://www.rubukkit.org/threads/mcp-failed-hash-check.68203/
     
  16. Naviom

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

    Trophy Points:
    103
    Имя в Minecraft:
    Navion
  17. Автор темы
    gamerforEA

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

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

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

    Trophy Points:
    103
  19. Автор темы
    gamerforEA

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

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

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

    Trophy Points:
    103
    Win7 Max SP1, JRE 1.7.0_21, JDK установлен соответственно
     
  21. Dereku

    Dereku Старожил

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

Share This Page