Возможно ли менять код майнкрафта без миксинов?

Версия Minecraft
1.16.5
API
Forge
Есть ли способы переписать/изменить метод, переменную и т.п без использования миксинов?
 
1,074
72
372
1,111
47
420
Причем здесь MCP? Я имею в виду можно ли менять код игры из forge мода
ну ты как будто бы отвечаешь сам на свой вопрос. наверно ты понимаешь, что жаву нужно сначала скомпилировать, прежде чем зпускать в жвм работать. Теперь вспоминаем как выглядит установка мода: скачиваешь архив из инета и кладешь в папку mods. Окей значит мод должен как то в себе содержать какие то измененные классы майнкрафта. Так как майнкрафт запускается на jre а не на jdk компилятора у нас нет, так что измененные классы у нас в скомпилированном виде. Допустим разрабы форжа(или что нынче модно) добавили бы такой механизм: если мод имеет замены классам майнкрафта - подменяем оные как он скажет. Какие проблемы бы из этого возникли:
1. Что если два мода решат заменить один и тот же класс?
2. Что если скомпилировались под один маппинг обфускации, а мод установили на другой?

Собственно разрабы форжа не придумали умного способа решения этих проблем. Вместо этого они придумали механизм ASM трансформеров. Если тебе еще не знакома концепция ClassLoader обязательно прочитай. Если в кратце форж обернул загрузку всего майнкрафтовского и модского в свой класс лоадер, который сначала читает байткод с диска, потом передает во все зарегестрированные ASM трансформеры. Фактически это очень брутальный механизм, использование которого предполагает не дюжую сноровку. Но как по мне это довольно веселая штука. Я писал какие то забавные статьи об этом.

Я считаю что ответ на твой вопрос - удобней чем миксинами нельзя.
 
Сверху