Как Это работает
Немного истории
Очень долгое время (ещё до 1.14) популярным загрузчиком модов был Forge. И для него же sp614x создал OptiFine, который помимо моментов, связанных с оптимизацией, добавлял систему CIT (Custom Item Textures), которая была перенесена из MCPatcher. Но когда игроки начали переходить на Fabric, они не могли пользоваться OptiFine по техническим причинам, и тем самым игроки на Fabric на некоторое время потеряли доступ к CIT. Но в 2021-22 годах пользователь shsupercm выпустил для Fabric модификацию CIT Resewn, которая полностью возвращала эту возможность.
После выхода 1.21.2 Mojang начали активно менять свой код рендера Minecraft, в 1.21.4 они поменяли и систему рендера предметов, а в 1.21.5 ванилла смогла почти полностью заменить основную фишку CIT, из-за которой ею пользовались — предметы по переименованиям. К этому времени shsupercm уже сдался и перестал поддерживать CIT Resewn.
И тогда некоторые люди заметили проблему: в ванильной системе наборов ресурсов, если вы будете стараться добавить 2 (или более) набора с одной и той же моделью. Проблема оказалась в том, что Mojang прописала загрузку моделей так, что загружается только самая верхняя модель, при этом другие она вообще не загружает в память игры.
RPF же решает эту проблему: он переписывает код загрузки так, чтобы все предметы из всех ресурспаков загружались в игру, и адаптирует выборку нужной модели под это.
Как работает выборка
Для начала разберём некоторые термины:
- Фолбэк (fallback) модель — это дочерняя модель предмета, которая записана в полях
fallbackвminecraft:selectи вminecraft:range_dispatch. - Стратегия выборки — это модуль RPF, который по своим правилам решает, какую модель предмета отправить на рендер
А теперь к сути. Система стандартной стратегии (да-да, она не одна! об этом в разделе Система делегирования) по очереди проходится по моделям и их дочерям, и если модель НЕ дала команду на делегирование рендера модели — то мы её рендерим!
