Forge, MCP, OptiFine

Версия Minecraft
1.12.2
API
Forge
2
0
Всем привет, я только недавно стал изучать всю эту тему с форжами и самими версиями майна, но умею программировать. По этому не "ветеран" разработки на майнкрафте (не знаю всех тонкостей) по этому пришел сюда ибо в дискордах меня игнорят...

В общем хочу накатить optifine на MCP дабы изменять сам код майнкрафта, собрал воркспейс на 1.12.2 и всё отлично, моды грузятся и т.д. но как только дело заходит к установке оптифайна, то появляется один и тот-же баг с зависанием игры при работающем звуке (т.е. если выключить звук в игре, то она будет нормально работать) я не мог отловить этот баг на дефолтном MCP с уже установленным optifine (который еще с этого сайта можно взять https://optifinesource.co.uk/) но в какой-то версии такой баг есть G5 вроде, по этому взял C6 ultra, но как только я насаживаю сырники на свой воркспейс, то появляется этот баг...

Баг простой, не правильно грузятся звуковые файлы и майн пытается их воспроизвести и застревает в звуковом потоке, где в бесконечном цикле он пытается прочитать байты. Немного отладив всю эту байду так и не понял в чем различия ибо имеются некоторые вопросы:
1. так как у меня имеются рабочие, то я не смог с помощью IntelliJ IDEA зайти в функцию read т.е. в отладке я не могу Step Into сделать студия игнорирует это действие (это при выключенных настройках скипа дебага java jre файлов) и по этому я не могу узнать, что там происходит, потому что в моем воркспейсе он заходит в read функцию и всё сходится к тому, что он при чтении прерывает поток и из-за этого не читает в буффер, как понять почему скипается функция read в InputStream?
2. Может быть есть какие-то dev твики? Я пытался разрабатывать на 1.7.10 и тогда изучал optifine и видел, что какой-то dev твикер есть, но я не совсем понял, что это такое. При гуглении, тоже почти ничего не нашел (может быть плохо искал)

Читал, что сложно его поставить, но я так понимаю в этом баге и есть сложность или в том, что много файлов рендера и остальных майн файлов изменяются и из-за этого сложно его внедрить?
 
Краш-лог
[13:56:31] [Thread-6/ERROR] [minecraft/SoundManager]: Error in class 'CodecJOrbis'
[13:56:31] [Thread-6/ERROR] [minecraft/SoundManager]: Error reading the header
[13:56:31] [Thread-6/ERROR] [minecraft/SoundManager]: Error in class 'SourceLWJGL OpenAL'
[13:56:31] [Thread-6/ERROR] [minecraft/SoundManager]: Audio Format null in method 'play'
Краш-лог:
[13:56:31] [Thread-6/ERROR] [minecraft/SoundManager]: Error in class 'CodecJOrbis'
[13:56:31] [Thread-6/ERROR] [minecraft/SoundManager]: Error reading the header
[13:56:31] [Thread-6/ERROR] [minecraft/SoundManager]: Error in class 'SourceLWJGL OpenAL'
[13:56:31] [Thread-6/ERROR] [minecraft/SoundManager]: Audio Format null in method 'play'
Optifine в целом плохо работает в dev среде (у меня он вообще не работает)

В общем хочу накатить optifine на MCP дабы изменять сам код майнкрафта
Ты занимаешься хренью. Прочитай как работают forge, mcp и core моды в целом.

Кратко обясняю принцип работы: Ванильный загрузчик модов позволяет добавить ,,препроцессор байткода,, для классов, которые должны быть загружены. MCP восстанавливает нормальные имена после progaurd-а, forge добавляет api итд.

По возможности используй события forge вместо модификации кода, для обеспечения совместимости с другими модами, но если тебе
все же необходимо это, то

1) Если тебе нужно перезаписать метод, или вставить свой кусок кода в какое-либо место - то Sponge mixins к вашим услугам
2) Если тебе нужно сделать поле/метод/класс публичным или снять final - используй аксесс-трансформеры (встроены в forge)
3) Ручная манипуляция байткодом/ASM/перезапись байткода из своего места, используй в самом крайнем случае, когда иначе никак (например Optifine, Spogne и Elca работают по данному принципу)
 
Не, это я всё знаю, но мне надо именно менять исходники...
Уже имею моды, которые вшил и нормально всё отрабатывает как надо + после оптифайна надо будет еще смартмувинг вставить за место модулярмувментс и это никак не сделать на миксинах ибо долго будет.

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

Какие еще есть предложения? Помогите с отладкой именно скип входа в функцию я просто не могу из-за этого сравнить стеки вызовов...
 
Назад
Сверху