Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Деобфускация и последующая декомпиляция модов

Решил я попробовать подключить "industrialcraft-2-dev-deobf..." как библиотеку, а нужные классы декомпильнул и вставлять в проект, сохраняя их пути.
Попробовал изменить EU-Reader, т.к. он все равно не работает. Вычистил лишний код, теперь игроку выводится оповещение, мол, не фурычит эта штука.
Код:
public class ItemToolMeter extends ItemIC2 implements IBoxable {

  public ItemToolMeter(Configuration config, InternalName internalName) {
      super(config, internalName);
      super.maxStackSize = 1;
      this.setMaxDamage(0);
  }

  public boolean onItemUseFirst(ItemStack itemstack, EntityPlayer entityplayer, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) {
      if(!world.isRemote) {
          EntityPlayer player = (EntityPlayer) entityplayer;
          player.addChatMessage(I18n.getString("message.bug.MEtr"));
      }
      return false;
  }

  public boolean canBeStoredInToolbox(ItemStack itemstack) {
      return true;
  }
}
В эклипсе все работает, компилирую, сую измененные классы в jar'ник и почти всегда поучаю ошибки, аля:
java.lang.NoSuchFieldError: blockID, в случае с EU-Reader'ом: maxStackSize.

В чем проблема?
Мб стоит для компиляции использовать обычный жарник ic?
Ты забыл все суперклассы сдекомпилировать и положить в сырцы.
Без суперклассов ни MCP ни BON не найдут правильные маппинги.
 
MCP не кривой, просто требует все зависимости.
Если под зависимостью имеется в виду наличие необходимых библиотек в папку lib(ic,

Скомпиленные классы берите из папки /bin вашего Eclipse, после реобфусцируйте их BON'ом.
Если имелся в виду этот bin, D:\forge\mcp\bin\minecraft\ic2:
Каким образом реобфусцировать необходимые классы/пакеты с классами?

Заархивировал папку с измененными классами, брал из bin\minecraft\ic2:
Безымянный.png

Разархивировал/сунул в жарник, точно такая же ошибка.
Ты забыл все суперклассы сдекомпилировать и положить в сырцы.
Без суперклассов ни MCP ни BON не найдут правильные маппинги.
Попробуем.
Ты забыл все суперклассы сдекомпилировать и положить в сырцы.
Без суперклассов ни MCP ни BON не найдут правильные маппинги.
Забыл упомянуть, что ошибку я получаю при запуске игры. Компилируется все без проблем.

Положил где нужно расширяемые классы, пытался компилировать как BON'ом, так и MCP'ом. Ошибки те же.
 
Посмотри на примере моих исходников для модов, может быть ты не совсем то сделал.
С твоими все получилось. Попробую передекомпильнуть IC.
Да, проблема была в моей невнимательности и двух классах с очень похожими названиями. Теперь все работает, спасибо.
 
Как декомпилировать моды для 1.7.2? MCP нету для этой версии.
Я пытаюсь декомпилировать VoxelMap 1.7.2

Также пробовал декомпилировать скриптом ReverseKit но ошибок очень много и размер уменьшился вдвое
public static ResourceLocation getRendersResourceLocation(Render render, Entity entity) {
if(preRenderDirect) {
try {
return render.func_110775_a(entity);
} catch (IllegalAccessError var3) {
preRenderDirect = false;
return VoxelMapRenderProtectedFieldsHelper.getRendersResourceLocation(render, entity);
}
} else {
return VoxelMapRenderProtectedFieldsHelper.getRendersResourceLocation(render, entity);
}
}
Что делать, как дальше быть? Помогите, пожалуйста.
 
Как декомпилировать моды для 1.7.2? MCP нету для этой версии.
Я пытаюсь декомпилировать VoxelMap 1.7.2

Также пробовал декомпилировать скриптом ReverseKit но ошибок очень много и размер уменьшился вдвое

Что делать, как дальше быть? Помогите, пожалуйста.
  1. MCP для 1.7.2 есть (RC версия).
  2. Рекомендую использовать не эти скрипты, а вот эту программу (качество деобфускации выше): нажми меня.
 
Народ помогайте: Разобрал IC2 и собрал (тут все в норме), запускаю серв, а там:

[SEVERE] The mod IC2 is expecting signature de041f9f6187debbc77034a344134053277aa3b0 for source industrialcraft-2_X.XXX.XXX-XX.jar, however there is no signature matching that description

Где то в IC2 в каком то классе видимо есть проверка контрольной суммы, вопрос один - может знает кто имя класса ?
 
Забей на это предупреждение. Контрольную сумму проверяет сам фордж, она записана в аннотации к главному классу мода.
 
клиент вылетает с измененным модом при запуске, если на клиенте мод без изменений оставить а на сервер измененный то все норм, но это только со взрывами разбираюсь, думаю если делать более существенные изменения то в клиент тоже надо будет измененный мод ложить
 
Проблема не в этом, читай лог внимательней.
 
Деобфусцировал мод, все нормально, изменил пару строк, начал собирать - 100 ошибок. Попробовал без изменений собрать - все равно ошибки. Из мода засунул все, поэтому просить других файлов он не может.
 
Деобфусцировал мод, все нормально, изменил пару строк, начал собирать - 100 ошибок. Попробовал без изменений собрать - все равно ошибки. Из мода засунул все, поэтому просить других файлов он не может.
Просить он может классы из библиотек + играют свою роль ошибки в коде, которые ты не исправлял. Открой проект в eclipse.
 
Деобфусцировал один мод, изменил его, да понял что обратно собрать не могу.
Так же заметил, что я не могу его собрать даже просто не меняя пробую пересобрать через MCP.
Без мода рекомпиляция в MCP проходит, а с не измененными исходниками мода набирается 51(!) ошибка.
Вот лог ошибок: http://pastebin.com/NdwdNeFY
Декомпилировал мод при помощи MRK, а обратно вот, немогу.
 
А если я хочу задействовать в декомпилированном моде классы из cauldron? Как это лучше все подключить в eclipse и скомпилировать обратно? Когда добавляю в библиотеки jar'ник cauldron'a скомпилированный, то оказывается, что функция из cauldron какая-нибудь требует abw вместо net.minecraft.world.World
 

Поделиться этой страницей

Назад
Верх