Как редактировать содержимое мода .jar (1.8.9) - PullRequest
0 голосов
/ 18 апреля 2020

Мод создает InputStream из URL-адреса, содержащего пользовательские сообщения чата, и я хотел бы изменить эти сообщения. Для этого я хотел бы изменить URL. Как бы я мог это сделать?

Мод ниже 1.8.9

Я пытался связаться с разработчиком по этому поводу, но я не получил никакого ответа. Кроме того, я декомпилировал мод, но после его импорта в Eclipse я получаю много ошибок.

Спасибо.

1 Ответ

1 голос
/ 18 апреля 2020

Найдите файл класса, содержащий URL-адрес, который вы хотите изменить, затем выберите опцию, как его изменить.

Вариант 1: редактирование jar

Извлеките файл класса и запустите на нем дизассемблер Java, например Krakatau (примечание: не javap, поскольку вы не можете собрать его выходные данные). Измените URL в разборке, затем соберите его (Кракатау тоже может это сделать). В файле jar замените файл класса, который вы разобрали, на файл, который вы снова собрали. (Помните, что jar-файлы - это просто переименованные zip-файлы.) Проверьте папку META-INF, чтобы убедиться в отсутствии подписи / контрольной суммы, которую вы аннулировали.

Вариант 2: отражение

Четный если поле является приватным, вы можете получить к нему доступ с помощью отражения. Создайте собственный мод, который использует отражение, чтобы получить URL и изменить его. Обратите внимание, что этот метод не будет работать, если URL-адрес жестко закодирован в функцию или если он static final.

Опция 3: coremod

Coremods - это функция, поддерживаемая Minecraft Forge, чтобы позволить вам используйте ObjectWeb ASM для управления классами по мере их загрузки. Создайте coremod самостоятельно. Он должен иметь загрузочный плагин и преобразователь класса. Плагин загрузки должен установить преобразователь класса в пути всех загруженных классов. Преобразователь класса должен использовать ClassReader для чтения класса, затем внести необходимые изменения, а затем ClassWriter, чтобы записать его обратно.

...