Проблема с рефлексией [1.7.10]

Статус
В этой теме нельзя размещать новые ответы.
2,505
81
397
Задача: достать toolMaterial из ItemHoe.
Майнкравтовцы не догадались сделать для него геттера, да еще и объявили protected, поэтому пришлось использовать рефлексию. Да, это ни разу не производительно, но так надо. Тем более, использую только один раз на стадии инициализации.
В общем, вот код. В нем нет ничего особого.
Код:
if (item instanceof ItemHoe) {
    try {
        return ReflectionHelper.getPrivateValue(ItemHoe.class, (ItemHoe) item, "theToolMaterial");
    }
    catch (Exception e) {
        //lalala
    }
}
return null;

В эклипсе все работает, но скомпилировав мод и запустив его на сервере, вылетает эксепшн.

3964bf536da34b5bbfd6885322082874.png


Есть какие-нибудь варианты, как можно пофиксить? Или может есть какие-нибудь другие методы получения ToolMaterial.
 
1,990
18
105
Если ты моддишь с форджем - забей, рефлексия тут не нужна.
В рабочем проекте лезешь в сурсы (а если у тебя скомпилированный жарник, ищешь (декомпилишь) сурсы и подключаешь их вместо жарника) и меняешь модификатор доступа нужному полю с protected на public.
Да-да, оно заработает в отдельном клиенте, потому что фордж своими трансформерами пробегается по классам кубача и меняет все модификаторы доступа на public. Вот только это происходит в рантайме, поэтому это не избавляет от проблемы с невозможностью компиляции, которую надо фиксить ручками.
 
608
5
15
Предлагаю что-бы кто-то заменил все слова protected/privat на public и выложил фиксеную либу :)
 
1,137
5
3
Заюзай AT и увидишь результат.(фордж соберётся с уже публичными полями)
 
2,505
81
397
А можно поподробнее про АТ?
[merge_posts_bbcode]Добавлено: 22.06.2016 00:28:07[/merge_posts_bbcode]

А, я понял

[merge_posts_bbcode]Добавлено: 22.06.2016 00:30:28[/merge_posts_bbcode]

Тему можно закрыть, спасибо.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху