Изменение файла .class в моде Minecraft - PullRequest
0 голосов
/ 07 июня 2018

Я использовал JD-Gui для декомпиляции файлов .class благодаря предложению, которое я нашел по несвязанному вопросу, и использовал Eclipse для редактирования кода .java.

Проблема возникает, когда яперекомпилируйте его в файл .class, используя функцию сборки Eclipse.Вместо создания .class со всем кодом .java внутри него создается .class, который заменяет каждую функцию выводом с указанием ошибки.Я подумал, что когда вы сказали компилятору скомпилировать с ошибками, он будет использовать код как есть, а не заменять код ошибками.

Все, что я хочу сделать, - это изменить файл .class, и я могу 'Кажется, я не нашел решения моей проблемы.Есть ли способ на самом деле скомпилировать код как есть, вместо того, чтобы заменить ошибкой, которую генерирует код?

1 Ответ

0 голосов
/ 07 июня 2018

Декомпиляция и изменение файлов .class вручную НЕ рекомендуется для моддинга Minecraft!

Ваши параметры в порядке предпочтения:

  1. Найдите источник мода и разветвите его.
  2. Попросите автора мода добавить API для того, что вы хотите изменить.
  3. Исправьте код моды во время выполнения.
  4. Декомпилируйте мод (возможно, нарушив его лицензию), используя BON2 или MCP / ForgeGradle для получения источников, похожих на исходный деобфусцированный источник.

Тем не менее, если вы настроены на выполнение 4, вам нужно будет найти все библиотеки, которые он используетдля компиляции снова.

он создает .class, который заменил каждую функцию выводом, указывающим, что это за ошибка.Я подумал, когда вы сказали компилятору компилировать с ошибками, он будет использовать код как есть, а не заменять код ошибками.

Это ожидаемое поведение.Компиляция с ошибками в значительной степени предназначена для использования с «горячим» кодом, поэтому вы можете быстро создавать прототипы, не беспокоясь о том, что исходный код компилируется на 100%, поэтому невозможно ссылаться на зависимости, которых у него нет.

Есть ли способ на самом деле скомпилировать код как есть, вместо того, чтобы заменить ошибкой, которая генерируется кодом?

Изменить байт-код напрямую или выполнить один из приведенных выше вариантов.

...