Как декомпилировать плагин minecraft
5)В строке "путь к файлу модификации" указываете мод .jar
6) Выбираем версию майнкрафта от 1.4.7 до 1.7.2 (1.7.10 тоже декомпилит)
7)Если у вас большой мод под 1.7.10 то выберете путь к mcp который найти можно ниже
8)Жмем "реверс" .
9) Далее, в нашей папке куда мы распаковали прогу появится папка "reverse" .А в ней 2 папки: " deobf " и " src " .В папке "deobf" лежит деобусфицированый мод. А в папке "src" лежит уже декомпиленый мод.
Никаких ошибок не возникало при декомпиляции 5 модов.
-----------------------------------------------------------
upd : у кого не декомпилирует 1.7.10 делаем так:
1)Идем в MRK
2)Открываем папку mcp
3)Берем mcp для 1.7.10 и распаковываем
4)Далее будет папка mcp 1.7.10 , в ней conf и bin
5)В папке mcp открываем версию 1.7.2 и заменям файлы на наши из архива (т.е bin и conf)
Все,теперь MRK декомпилит 1.7.10!
-----------------------------------------------------------
upd 2.0: Ссылка на старую программу заменена новой,с поддержкой java 8 .
Minecraft Deobfuscator - снимаем майнобфускацию с сурцов
Автор: Z_Doctor
Ссылка на загрузку: Dropbox - Designer Minecraft Deobfuscator v3 (WPF) (Аналогичный exe-шник см. в прикепленных к треду файлах)
Официальный тред (больше ссылок, FAQ, сурсы и скриншоты): тык
Переведено с официального треда автора:
Описание:
Эта программа пройдет через декомпилированный мод (zip или jar-файл) и заменит все запутанные имена деобфусцированными при копировании всего остального. Например, запутанные поля, такие как field_151034_e или func_130014_f_ , будут заменены на читаемые имена APPLE и getEntityWorld , соответственно (как определено MCPBot). Это может быть полезно для восстановления любого потерянного кода.
Цель:
Цель этой программы - помочь в поиске утерянного исходного кода. Существует до +33 000 обфусцированых полей, параметров и методов, и необходимость переименвывать каждое из них вручную - непрактично и отнимает много времени. Minecraft Deobfuscator сделает эту работу за вас.
Как пользоваться:
Чтобы использовать эту программу, сначала нужно получить декомпилированную версию мода. Эта программа не декомпилирует моды самостоятельно (но может сделать это в будущих версиях) и сообщит вам, не был ли декомпилирован предоставленный вами мод. Чтобы узнать, как декомпилировать мод, прочитайте раздел Как "декомпилировать мод".
После того, как у вас будет декомпилированный мод, нажмите кнопку открытия и перейдите к декомпилированному файлу zip или jar и выберите его.
Затем выберите маппинг, нажав кнопку «Mapping». Это откроет список доступных маппингов. Затем, когда вы выбрали маппинг, котороый хотите, закройте список, нажав кнопку еще раз или в любом другом месте. После загрузки маппингов нажмите кнопку «Start». Это предложит вам выбрать, где сохранить деобфусцированный мод. После этого програме останется только выполнить свою работу.
Как декомпилировать мод:
Вы можете использовать декомпилятор, такой как ByteCodeViewer или JD-Gui, но я рекомендую FernFlower. Точнее, версия, которая была модифициована девелоперами Forge'а. Чтобы собрать FernFlower, скачайте и распакуйте zip. Shift + щелчок правой кнопкой мыши и выберите «Открыть окно PowerShell» и введите «. \ Gradlew build». Как только он будет собран, он будет находиться в папке build >> libs. Затем следуйте инструкциям из README, чтобы узнать о командах. (Вы так же можете использовать онлайн декомпиляторы прим. ред.)
JD - Java Decompiler
Java Decompiler (JD) - декомпилятор для языка программирования Java. JD предоставляется как программа c графическим интерфейсом, а также плагином для Eclipse IDE (JD-Eclipse) и IntelliJ IDEA (JD-IntelliJ). JD-Core, JD-GUI & JD-Eclipse это проект с открыты исходным кодом под лицензией GPLv3.
Как вы поняли, данная программа/плагин позволяет отображает исходные коды Java «. class » файлов. (Как вы поняли его можно использовать для просмотра кода из модов. )
Приложение состоит из двух частей. JD-Core представляет собой библиотеку для декомпилирования (отображения исходного кода) файлов «. class ». Может использоваться для воссоздания утерянного кода и так далее. JD-GUI – это графический интерфейс для удобного отображения Java кода.
Существует также плагин для популярной среды разработки Eclipse, который называется JD-Eclipse. Из особенностей приложения стоит отметить: высокую скорость декомпиляции, цветовую подсветку синтаксиса и поддержку иерархии файлов «. class ».
Сражу сказу что: JD-GUI & JD-Eclipse & JD-IntelliJ — для просмотра, но не более. Для полного восстановления кода/декомпиляций советую использовать Fernflower.
Туториал по созданию плагинов mineraft
CraftBukkit - глобальная серверная модификация, предоставляющая API для взаимодействия с игровым миром и созданная для упрощения создания плагинов к SMP-серверу.В августе 2014 года команду Bukkit покинули практически все разработчики, в том числе глава проекта EvilSeph .
Spigot - оптимизированная версия CraftBukkit со своими доработками и новыми возможностями и настройками, которая продолжила работу команды Bukkit .
Разработки, созданные для данного туториала, используют ядро Spigot.
[+] <- Помощь в изучении Java;
[+] <- Сборка ссылок на обучающие материалы
[+] <- Документация Spigot API;
Софт для начала работы :
Среда разработки :
1) IntelliJ IDEA [+]
2) Eclipse [+]
3) NetBeans [+]
Для нормального запуска этих программ у Вас должен быть установлен JDK (Java Development Kit) и JRE (Java Runtime Environment)!
Редактирование файлов (.yml, .json, etc. ) :
1) Notepad++ [+]
Проект, созданный для данного туториала, был разработан в СР Eclipse.
Основы :
Java - обьектно-ориентированный язык программирования (вся программа - связь разных обьектов. Это как организм, в котором каждый орган отвечает за свою функцию для нормального функционирования всего организма. Органы могут сотрудничать, обмениваться информацией и тп).
Его приемущества:
1) Инкапсуляция :
Теория : позволяет устанавливать доступ к обьекту и информации в нем с помощью модификаторов доступа.
Пример : у Вас есть 3 сейфа с информацией. Первый - приватный (пароль знаете только Вы), второй - обычный (пароль знают Ваши родственники и соседи), третий - публичный (пароля нет).
2) Наследование :
Теория : позволяет наследовать свойства, методы и поля родительского обьекта.
Пример : У Вас есть обьект Car (автомобиль), и обьект BMW , который наследует обьект Car.
3) Полиморфизм (углубленно о наследовании):
Теория : позволяет обьекту использовать методы производного класса, который не существует на момент создания базового.
Пример : Что может хранить класс Car ? Например, название марки автомобиля, кол-во сидений и тп. Допустим, кол-во сидений = 4. А что, если мы делаем 2-местный автомобиль? Мы наследуем класс Car и имеем возможность изменить для себя кол-во сидений для нашего авто.
Переменные - ячейки памяти, которые хранят в себе определенный обьект (тип данных).
Модификаторы доступа в Java:
private - приватный (как мы помним, пароль знаем только мы).
(модификатор не указывается) - обычный (как мы помним, пароль знают только наши родственники и соседи).
protected - защищенный (пароль знают только наши дети и мы сами).
public - публичный (пароля нет).
НАЧАЛО РАБОТЫ:
Создание проекта в среде разработки Eclipse :
1) Запускаем Eclipse .
2) Нажимаем на кнопку File (в левой верхней части экрана) -> New -> Java project
3) В появившемся окне указываем имя проекта (в этом случае " RuBukkitGuide ") и ставим такие настройки:
4) Нажимаем Finish .
Проект создан!
Создание пакетов :
1) В созданном обьекте нажимаем ПКМ по папке src.
2) Нажимаем New -> Package .
3) Создаем сами пакеты:
4) Нажимаем Finish.
Пакеты созданы.
Мы создали в папке src папку org , в ней папку rb и в ней папку guide.
Для чего нужны пакеты? Представьте, что у Вас есть один большой ящик (Ваша программа) и в нем 4 маленьких ящика. В первом - яблоки, во втором - персики, в третьем - гранаты, в четвертом - ананасы. Для чего нам нужны эти коробки? Правильно, чтобы все фрукты не находились в одной коробке.
Но в Java пакеты не только используются для сортировки. Они берут участие в инкапсуляции . Помните Обычный модификатор доступа? Вот вся информация с модификатором Обычный будет доступна всем обьектам в этом пакете. Тоесть, у яблок своя тусовка, и никакие персики и другие фрукты туда не полезут.
Создание класса:
Создадим теперь наш главный класс, который запустит весь наш плагин, назовем его Main .
1) Нажимаем ПКМ по пакету guide -> New -> Class .
2) Указываем название и нажимаем Finish.
Класс создан!
Добавление библиотеки Spigot в проект:
Для этого нажимаем ПКМ по проекту и нажимаем Properties -> Java build pass , заходим во вкладку Libraries и нажимаем на кнопку Add external JARs и указываем место хранения ядра Spigot (скачать их можно тут или тут ).
Начинаем кодить!
Созданный нами класс Main пока-что выглядит вот так:
Для того, чтобы наш проект считался плагином, нам нужно унаследовать класс JavaPlugin (этот класс находится в самом ядре Spigot ).
Для того, чтобы унаследовать этот класс, нам нужно в строку public class Main дописать extends JavaPlugin .
Хорошо. Или нехорошо? Что за красная лампочка. Eclipse нам говорит, что мы не импортировали класс JavaPlugin . Нажимаем на лампочку и импортируем.
Теперь мы имеем доступ к protected и public полям и методам. Чтобы Java знала наверняка, что мы используем метод из родительского класса (JavaPlugin), мы скажем это, используя аннотацию @Override. Какой метод мы возьмем из родительского класса? onEnable(), так как он запускает весь наш проект. Само ядро будет знать, что это плагин, и начнет получать всю нужную информацию. Если мы уберем extends JavaPlugin и метод onEnable(), то когда добавим плагин в папку plugins, он вообще не загрузится, и его вообще не будет в списке плагинов.
Что такое void? Это тип возвращаемых данных. Поскольку метод onEnable() ни чего не возвращает через return, то мы должны сообщить об этом системе. (Тип доступа может быть любым форматом возвращаемых данных, к примеру: int, boolean и даже String).
Как узнать все методы, к которым мы имеем доступ? Пишем this и ставим точку. Нам программа вывела все доступные методы и поля из класса JavaPlugin.
Что будем делать? Ну давайте выведем при запуске плагина, что он включился.
Для этого заходим в метод onEnable() < >и между < и >пишем нашу команду. Она выглядит так: this.getLogger().info("ПЛУГИН РАБОТАИТ!");
Что мы сделали, введя эту команду? Мы получили класс Logger, в которого есть метод info(. ), который и запустили.
Плагин написан. Теперь мы должны создать файл plugin.yml. Нажимаем ПКМ по проекту. В окне нажимаем New -> File и вводим plugin.yml.
В нем мы должны ввести такие значения:
Теперь мы можем скомпилировать плагин. Нажимаем ПКМ по проекту, в окне нажимаем Export . -> Java -> JAR file -> Next и вводим путь к папке, где хотим сохранить файл.
Читайте также: