Рендер End Portal на TileEntity

Версия Minecraft
1.12.2
Добрый вечер! Имеется класс TESR, являющийся полной копиркой класса TileEntityEndPortalRenderer: [Java] VoidRenderer.java - Pastebin.com
Имеется его регистрация:
Java:
@EventHandler
public static void Init(FMLInitializationEvent event)
{ 
    ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCounter.class, new VoidRenderer());
}
Имеется регистрация TileEntity:
Java:
@EventHandler
public static void PreInit(FMLPreInitializationEvent event)
{
    GameRegistry.registerTileEntity(TileEntityCounter.class, new ResourceLocation(Reference.MOD_ID, "counter"));
}
Класс TileEntity, если требуется: [Java] TileEntityCounter.java - Pastebin.com
Тем не менее, по какой-то причине рендер не работает.
(Белый цвет не является проблемой рендера - просто натянутая текстура)
Бинд TESR пробовал ставить и в preInit, регистрацию TE пробовал ставить и в Init - всё без толку.
Подскажите, что делаю не так?
 

Вложения

  • 2019-07-23_23.55.31.png
    2019-07-23_23.55.31.png
    227.9 KB · Просмотры: 11
7,099
324
1,510
Скинь класс блока
~~~
Попробовал это? В прошлой теме советовал, может, ты не успел прочитать до обновы
Java:
@Override
public EnumBlockRenderType getRenderType(IBlockState state) {
    return EnumBlockRenderType.ENTITYBLOCK_ANIMATED;
}
 
Скинь класс блока
~~~
Попробовал это? В прошлой теме советовал, может, ты не успел прочитать до обновы
Java:
@Override
public EnumBlockRenderType getRenderType(IBlockState state) {
    return EnumBlockRenderType.ENTITYBLOCK_ANIMATED;
}

[Java] BlockCounter.java - Pastebin.com - класс блока
[Java] BlockTileEntity.java - Pastebin.com - класс BlockTileEntity

Как обнаружилось, TE уже регистрируются при расширении класса BTE.

Добавил переопределение - теперь вообще не рендерится(Но уже хоть что-то, ибо раньше эффекта не было вообще)
 

Вложения

  • 2019-07-24_01.53.23.png
    2019-07-24_01.53.23.png
    424.9 KB · Просмотры: 11
7,099
324
1,510
Ок, значит проблема в TESR. Попробую юзать ванильный рендерер с костылем, как в EM:
Java:
public class VoidRenderer extends TileEntitySpecialRenderer<TileEntityCounter> {

    private TileEntityEndPortalRenderer vanilaRender = (TileEntityEndPortalRenderer) TileEntityRendererDispatcher.instance.renderers.get(TileEntityEndPortal.class);

    private TileEntityEndPortal teEndPortal = new TileEntityEndPortal() {
        @Override
        public boolean shouldRenderFace(EnumFacing p_184313_1_) {
            return true;
        }
    };

    public void render(TileEntityCounter te, double x, double y, double z, float partialTicks, int destroyStage, float alpha) {
        vanilaRender.render(teEndPortal, x, y, z, partialTicks, destroyStage, alpha);
    }
}
Это также позволит не дублировать код
~~~
Java:
public BlockTileEntity(String name, Material material) {
    super(name, material);

    GameRegistry.registerTileEntity(this.getTileEntityClass(), this.getRegistryName().toString());
}
Кажется, это не очень хорошая идея регистрировать тайл в его же конструкторе. Лучше это делать во время события RegistryEvent.Register<Block>
 
Удалил регистрацию в конструкторе, перенёс в эвент:
Java:
@SubscribeEvent
public static void onBlockRegister(RegistryEvent.Register<Block> event)
{
    event.getRegistry().registerAll(ModBlocks.BLOCKS.toArray(new Block[0]));
    GameRegistry.registerTileEntity(TileEntityCounter.class, Reference.MOD_ID + "counter");
}

Изменил рендер на код выше - всё ещё пикрил, абсолютно без понятия, что вообще может не работать.
 

Вложения

  • 2019-07-24_02.24.00.png
    2019-07-24_02.24.00.png
    109.7 KB · Просмотры: 9
7,099
324
1,510
А можешь залить на гитхаб свой воркспейс? Попробую потрогать его
 
А можешь залить на гитхаб свой воркспейс? Попробую потрогать его
Могу, но к сожалению только завтра, т.к. довольно поздно и я уже засыпаю за столом. Как залью - оставлю ссылку с упоминанием
 
7,099
324
1,510
Причину не нашел, но выяснил, что метод render вообще не вызывается
 
Наконец-то разобрался! Дурная моя голова в 2:48 ночи по какой-то причине решила поменять в классе рендера расширение рендера непосредственно портала, на расширение класса TESR несуществующего рендера и забыла об этом. По чистой случайности увидел в коде Random Portals и решил поменять - заработало. Помимо этого, перенёс регистрацию рендера из preInit в ClientProxy, а именно в ModelRegistry по совету одного человека.
 
Сверху