- 1,159
- 38
- 544
Доброго утра, народ. У меня возникла задача рендерить тайл, модель которого занимает в высоту 2 блока:
Нижняя часть (подставка) представляет собой обычный монолитный блок, а верхняя часть (панель) является кастомной моделькой с анимацией - при приближении игрока она будет подниматься на ножках из лежачего положения в приподнятое и опускаться, когда игрок отойдет от блока.
Я вижу два способа реализации этой задачи:
Нижняя часть (подставка) представляет собой обычный монолитный блок, а верхняя часть (панель) является кастомной моделькой с анимацией - при приближении игрока она будет подниматься на ножках из лежачего положения в приподнятое и опускаться, когда игрок отойдет от блока.
Я вижу два способа реализации этой задачи:
- Рендерить как единую модель, в которой хранится и верхняя и нижняя часть, а сверху устанавливать невидимый блок-заполнитель:
- + Просто реализуется
- -
TESR
рендерит себя заново каждый тик, в то время как стандартные блоки "запекают" свой рендер в дисплей листы (черезISimpleBlockRenderingHandler
). Я не уверен в том что именно так все и происходит, но предполагаю что такое имеет место быть. Надеюсь, знающие люди расскажут об этом подробнее.
Если все действительно так, как я описал, то бессмысленно рендерить нижнюю часть заново, т.к. она никогда не изменяется. В этом и заключается минус данного решения - в излишней работе.
- Рендерить нижнюю часть стандартным рендерером монолитных блоков, а для верхней заюзать
TESR
:- + В теории это должно лучше сказаться на производительности
- -
TileEntity
придется переместить в верхний блок, чтобы связать с нимTESR
панели - -
IItemRenderer
придется кленить из двух рендеров: нижнего и верхнего - - кода становится больше