Редактирование class файлов – «больная» для большинства модмейкеров тема, ведь что бы достигнуть определенного результат в этом деле нужно не только иметь начальные знания программирования, а еще и терпение и усидчивость, ибо большинство параметров определяется «методом тыка». На данный момент модмейкеров, которые умеют и любят редактировать class файлы, почти не осталось, поэтому я и решил написать данный урок. Процесс редактирования класс файлов моим методом можно условно поделить на четыре этапа: I. Дешифровка class файла II. Редактирование class файла III. Шифрование class файла IV. Оптимизация class файла для выполнения на устройствах (научно выражаясь, преверификация)
Для начала нам нужно скачать KEmulator любой версии(ну я надеюсь он есть у всех) и пак программ, ссылку на который я напишу в конце статьи. Скачали ? Ну тогда начинаем.
Для удобства мы начнем с создания каталогов, которые просто необходимые в данной ситуации, ибо если все бросать в одну папку, то рано или поздно можно запутаться и потерять отредактированный class файл. Для этого проходим по пути …\KEmulator\file\root\ , если вдруг папки file нет, то берем и создаем её. После того, как открыли папку root, создаем в ней папки со следующими названиями: • сlass – эта папка будет содержать в себе оригинальные class файлы • j – эта папка будет содержать дешифрированные class файлы • nclass – эта будет содержать отредактированные class файлы • ver – эта будет содержать преверифицированные class файлы т.е. в конечном итоге у вас должно получится что-то похожее
конечный результат
После создания каталогов мы можем приступать к редактированию class файлов. Для начала копируем необходимый class файл и запускаем программу d2j.jar в kemulator’e. Сразу же, без всяких церемоний, мы видим окно с двумя полями для ввода адресов
В первом поле мы вводим адрес class файла т.е. «\root\class\*.class», где *- название класса Во втором поле мы вводим адрес папки, в которой будет сохранен дешифрированный class, в нашем случае это «\root\j\»
После ввода путей, нажимаем кнопочку, которая находится в правом нижнем углу или клавишу F2. После пары секунд раздумий, программа выдаст нам желаемый результат
На этом с дешифрацией class файла покончено.
После того, как мы выполнили дешифрацию класс файла, в папке j появится файл с названием *.j, где * - название класс файла. Файлы формата .j можно открывать стандартным блокнотом Windows, хотя я рекомендую использовать WordPad, так как он поддерживает форматирование текста, из чего следует повышение вашего комфорта.
Описывать куда, что и как нужно изменить в class’е для получения результата, я не буду, так как на эту тему написан не один десяток статей и для каждой игры свои особенности их редактирования. После внесения изменений не забываем сохраниться.
Шифрование, как вы уже должны были догадаться, этот процесс обратный дешифрованию, поэтому на вход мы дадим файл формата .j, а на выходе получим заветный . class. Для начала мы запускаем j.jar в kemulator’е и видим подобное окно с двумя полями для ввода адресов
В первом поле мы указываем адрес к .j файлу т.е. к тому, который мы открывали и редактировали в WordPad’e. В нашем случае путь будет выглядеть так «\root\j\*.j» где * - название .j файла Во втором поле мы указываем адрес к папке, в которой будет храниться новый class файл. В нашем случае адрес будет выглядеть так «\root\nclass\».
После ввода путей нажимаем кнопку в правом нижнем углу или клавишу F2. В результате у Вас должно выскочить подобное уведомление.
После получения class файла в 3ем пункте, нам необходимо выполнить преверификацию. Это необходимо для оптимизации class файла, что бы мод мог спокойно работать на мобильных телефонах, т.е. для внутренних тестов на kemulator’e её можно не выполнять. Что бы выполнить преверификацию , мы запускаем preverifier.jar в kemulator’e и видим такое окно с двумя полями для ввода адресов.
В первом поле мы указываем адрес к папке с новым class файлом, в нашем случае это «\root\nclass\» Во втором указываем путь к папке, в которой будут хранится преверифицированные class файлы. В нашем случае это «\root\ver\»
После ввода путей нажимаем кнопку в правом нижнем углу или клавишу F2. В результате у Вас должно выскочить подобное уведомление.
Хочу обратить Ваше внимание на то, что на выходе мы получим class с добавленной в название приставкой в виде названия папки. В нашем случае это выглядит так *class>ver*.class. Разумеется перед возвращением файла на его законное место, эту приставку нужно убрать.
Итог В данной статье я попытался подробно расписать один из методов редактирования class файлов. Разумеется, имеются и другие, более простые методы редактирования, но зачастую они просты лишь снаружи и не дают возможности воплотить все мысли модмейкера или просто не до конца выполняют свою работу, например, не производят преверификацию class файла.
Помогите мне кто-нибудь, пожалуйста. После создания каталогов, я скопировал мой .class, поместил его в папку - D:\KEmulator\KEmulator Lite v.0.9.8 rus\file\root\class, зашел в кемулятор (KEmulator Lite v.0.9.8 rus), открыл уже скачанный D2J.jar и написал всё, как надо было. Т. е. в первой строчке - \root\class\BoardManager.class, во второй - \root\class\j\. Нажимаю на кнопку в правом нижнем углу и... думает... и - выдаёт следующую ошибку: java.io.IOException. Искал в гугле, в яндексе и ничего не нашел. Буду очень благодарен, если кто-то подскажет мне, как её исправить.
Статья годная, молодец, что выложил. С Владом не согласен, java byte, во-первых, сложнее к осмыслению действий, во-вторых, оптимизацию класса всё-равно придётся по-этой же схеме делать.