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

Помогите Из NMS в MCP и наоборот

BeYkeR

Старожил
Девелопер
Пользователь
Баллы
173
Пишу с горячего фокси на андрейке леденца. Полноценного редактора нету, как-то неудобно.

Так вот, крч пишу либу под "калдрон" используя туториал с mcp: https://bukkit.org/threads/tutorial...s-using-mcp-for-nms-via-asm-remapping.131060/ (Просто юзаю рефлексии и .class'ы из nms). С деобфускацией все идет хорошо, но после реобфускации начинается проблема: плагин обфусцируется не полностью, только местами. Как исправить ?
 
Пишу с горячего фокси на андрейке леденца. Полноценного редактора нету, как-то неудобно.

Так вот, крч пишу либу под "калдрон" используя туториал с mcp: https://bukkit.org/threads/tutorial...s-using-mcp-for-nms-via-asm-remapping.131060/ (Просто юзаю рефлексии и .class'ы из nms). С деобфускацией все идет хорошо, но после реобфускации начинается проблема: плагин обфусцируется не полностью, только местами. Как исправить ?
Сам долго мучался, но отыскал решение)
Прямо так не скажу пока не написал тутор, но дам наводку: открой тот класс, поля которого не обфусцировались, и поищи там исполтзуемое поле/метод :)
Дальше думаю сам обо всём догадаешься)
 
В составе котла идут маппинги cb->mcp. Просто открой их и смотри.
 
В составе котла идут маппинги cb->mcp. Просто открой их и смотри.
Я про эти маппинги знаю, по-моему не в них дело.
Он про них явно знает, тут дело другое. Если не догадается по моему совету, то скажу что надо сделать
Использовать ванильный код ? Или не до конца деобфусцированный код (типо всякие методы остались обфусцированными, а названия пакетов и классов изменились) ?
 
Я про эти маппинги знаю, по-моему не в них дело.
Использовать ванильный код ? Или не до конца деобфусцированный код (типо всякие методы остались обфусцированными, а названия пакетов и классов изменились) ?
Короче не угадал. Extends'ы не ремаппятся, надо преобразовать в... **я. Короче пример: есть поле поиска пути у моба. Открываем EntityZombie, видим там такое поле? Нет, смотрим что он наследует. Ага, EntityMonster. В EntityMonster есть система поиска пути? Да, есть, значит у себя в коде делаем вместо this.pathfinder (это пример) ((EntityMonster)this).pathfinder, потому что класс EntityZombie не содержит такого поля, => строку с ним ремапнуть нельзя, а вот если преобразовать в родительский класс, то ремаппинг пройдёт успешно, а преобразование удалится в результате)
 
Короче не угадал. Extends'ы не ремаппятся, надо преобразовать в... **я. Короче пример: есть поле поиска пути у моба. Открываем EntityZombie, видим там такое поле? Нет, смотрим что он наследует. Ага, EntityMonster. В EntityMonster есть система поиска пути? Да, есть, значит у себя в коде делаем вместо this.pathfinder (это пример) ((EntityMonster)this).pathfinder, потому что класс EntityZombie не содержит такого поля, => строку с ним ремапнуть нельзя, а вот если преобразовать в родительский класс, то ремаппинг пройдёт успешно, а преобразование удалится в результате)
Ого, спасибо, теперь работает :D
Теперь волнует другой вопрос: Можно ли включить поддержку разных версий майна с Cauldron'ом ? Насколько я знаю, в каждой версии майна обфускация происходит по разному.
 
Ого, спасибо, теперь работает :D
Теперь волнует другой вопрос: Можно ли включить поддержку разных версий майна с Cauldron'ом ? Насколько я знаю, в каждой версии майна обфускация происходит по разному.
Разные классы: одни для NMS, другие для MCP. И при старте проверяй, калдрон это или нет, и подключай соответствующее
 

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

Назад
Верх