Не обрабатывается RenderPlayerEvent, рендер щита в позиции блокировки

Версия Minecraft
1.12.2
69
3
3
Здравствуйте, мне необходимо отрендерить щит в руке в позиции блокировки, я знаю, что это делается само с помощью:
Java:
  public EnumAction getItemUseAction (ItemStack Stack)
  {
    return EnumAction.BLOCK;
  }
Hо по некоторым обстоятельствам я не могу использовать метод, предоставленный выше.
Я нашел необходимую информацию и понял, что мне нужен RenderPlayerEvent:
Java:
  @SubscribeEvent
  public static void ShieldBlockingRender (RenderPlayerEvent.Pre Event)
  {
    EntityPlayer Player = Event.getEntityPlayer ();

    ItemStack MainHand = Player.getHeldItemMainhand (), OffHand = Player.getHeldItemOffhand ();

    if (MainHand != null && Player.isHandActive () && MainHand.getItem () instanceof WickerShield)
    {
      Event.getRenderer ().getMainModel ().rightArmPose = ModelBiped.ArmPose.BLOCK;
    }

    if (OffHand != null && Player.isHandActive () && OffHand.getItem () instanceof WickerShield)
    {
      Event.getRenderer ().getMainModel ().leftArmPose = ModelBiped.ArmPose.BLOCK;
    }   
  }
Но он не обрабатывается, когда в этом же классе у меня есть другой ивент, который обрабатывается, и все нормально регистрируется в главном классе:
Java:
  @EventHandler
  public void preInit (FMLPreInitializationEvent Event)
  {
    Proxy.preInit (Event);
    MinecraftForge.EVENT_BUS.register (WickerShield.class);
  }
Картинки:
Мой щит:MyShield.png
Майнкрафтовский щит:MineShield.png

Еще я эксперементировал с трансформацией модели, но ничего не добился. Возможно, плохо эксперементировал.
Итог: Как мне исправить ситуацию с ивентом? Или можно по-другому отрендерить?
 
Каким-то образом ивент стал обрабатываться, но с рендером проблема. Данный код не делает своего дела, от слова ничего:
Java:
@SubscribeEvent
  public static void ShieldBlockingRender (RenderPlayerEvent.Pre Event)
  {
    EntityPlayer Player = Event.getEntityPlayer ();

    ItemStack MainHand = Player.getHeldItemMainhand (), OffHand = Player.getHeldItemOffhand ();

    if (MainHand != null && Player.isHandActive () && MainHand.getItem () instanceof WickerShield)
    {
      Event.getRenderer ().getMainModel ().rightArmPose = ModelBiped.ArmPose.BLOCK;
    }

    if (OffHand != null && Player.isHandActive () && OffHand.getItem () instanceof WickerShield)
    {
      Event.getRenderer ().getMainModel ().leftArmPose = ModelBiped.ArmPose.BLOCK;
    }   
  }
Нашел другой способ, но он тоже не работает:
Java:
  @SubscribeEvent
  public static void ShieldBlockingRender (RenderPlayerEvent.Pre Event)
  {
    final EntityPlayer Player = Event.getEntityPlayer ();

    if (Player != null)
    {           
      ItemStack MainHand = Player.getHeldItemMainhand (), OffHand = Player.getHeldItemOffhand ();

      if (MainHand != null && Player.isHandActive () && MainHand.getItem () instanceof WickerShield)
      {
        Event.getRenderer ().getMainModel ().bipedRightArm.rotateAngleX = Event.getRenderer ().getMainModel ().bipedRightArm.rotateAngleX * 0.5F - 0.9424779F;
        Event.getRenderer ().getMainModel ().bipedRightArm.rotateAngleY = -0.5235988F;
      }

      if (OffHand != null && Player.isHandActive () && OffHand.getItem () instanceof WickerShield)
      {
        Event.getRenderer ().getMainModel ().bipedLeftArm.rotateAngleX = Event.getRenderer ().getMainModel ().bipedLeftArm.rotateAngleX * 0.5F - 0.9424779F;
        Event.getRenderer ().getMainModel ().bipedLeftArm.rotateAngleY = 0.5235988F;
      } 
    }
  }
Пробовал RenderPlayerEvent.Post.
 
Назад
Сверху