Свой рендер сущности не работает

Версия Minecraft
1.12.2
API
Forge
11
0
Я решил изменить рендер игрока. Создал вот такой класс для регистрации рендеров:
RenderRegistry.java:
public class RenderRegistry {

    public static void doRegister() {
        RenderingRegistry.registerEntityRenderingHandler(EntityPlayer.class, new IRenderFactory<EntityPlayer>() {
            @Override
            public Render<? super EntityPlayer> createRenderFor(RenderManager manager) {
                return new RenderImprovedPlayer(manager, false);
            }
        });
    }
}

В ClientProxy.preInit() вызываю RenderRegistry.doRegister() . И пишу в RenderImprovedPlayer вот это:
RenderImprovedPlayer.java:
@SideOnly(Side.CLIENT)
public class RenderImprovedPlayer extends RenderLivingBase {

    public RenderImprovedPlayer(RenderManager renderManager, boolean useSmallArms) {
        super(renderManager, new ModelPlayer(0.0F, useSmallArms), 0.5F);
        System.out.println("Was initialized");
    }

    public ModelPlayer getMainModel() {
        return (ModelPlayer) super.getMainModel();
    }

    public void doRender(EntityPlayer entity, double x, double y, double z, float entityYaw, float partialTicks) {
        System.out.println("Rendering");
    }

    @Nullable
    @Override
    protected ResourceLocation getEntityTexture(Entity entity) {
        return DefaultPlayerSkin.getDefaultSkin(entity.getUniqueID());
    }
}
Прошу не обращать внимания на то, что в методе рендера ничего нет, что касается рендера. Самое главное, что System.out.println("Was initialized"); срабатывает, тоесть с инициализацией все ок, а System.out.println("Rendering"); - нет. Получаеться, что у меня свой рендер не работает... Что делать? Как заставить его работать?
 
11
0
RenderingRegistry.registerEntityRenderingHandler не перезаписывает рендеры, а их сохраняет для последующей регистрации. Можно воспользоваться Minecraft.getInstance().getRenderManager().register(...);.
Нет у меня в Forge 1.12.2 Minecraft.getInstance() метода, есть Minecraft.getMinecraft(), и то, в RenderManager нет метода register().
 
11
0
Я кстати такое попробовал: Minecraft.getMinecraft().getRenderManager().entityRenderMap.replace(EntityPlayer.class, new RenderImprovedPlayer(Minecraft.getMinecraft().getRenderManager(), false));
В ClientProxy.preInit() выбило NullPointerException при загрузке майнкрафта. Потом я это перенес в метод ClientProxy.init(), ошибки не произошло, но и рендера тоже.
 
11
0
Тогда придётся делать через ивенты.
Что же... Решил попробовать. В главный класс мода пишу:
MyMod.java:
public static RenderImprovedPlayer renderImprovedPlayer;
В ClientProxy.init() пишу это:
ClientProxy.init():
@Override
public void init(FMLInitializationEvent event) {
    super.init(event);
   
    LayersRegister.doRegister();
    MyMod.renderImprovedPlayer = new RenderImprovedPlayer(Minecraft.getMinecraft().getRenderManager(), false);
}
В EventHandler вписал следущее:
EventHandler.java:
// ...
@SubscribeEvent
@SideOnly(Side.CLIENT)
public void onRenderPlayer(RenderPlayerEvent.Pre event) {
    event.setCanceled(true);
    MyMod.renderImprovedPlayer.doRender(event.getEntityPlayer(), event.getEntityPlayer().posX, event.getEntityPlayer().posY, event.getEntityPlayer().posZ, event.getEntityPlayer().cameraYaw, 1f);
}
// ...
В игре когда перешел в вид от третего лица, заспамило в чат "Rendering". Тоесть все теперь ок. Но вопрос, я все правильно сделал? Правильно и грамотно?
 
Сверху