- 173
- 1
- 3
Приветствую
Есть необходимость изменить поворот руки игрока когда тот держит мой предметклассика.
Сколько ни перерыл, видимого эффекта я так и не достиг.
Пробовал менять ArmPose руки на ArmPose.EMPTY, эффекта ноль
Получилось крутить вот таким способом
Этот код успешно поворачивает руку как мне нужно, но при этом рука не рендерится совсем когда игрок берет в руку какой-нибудь предмет
Есть идеи?
Есть необходимость изменить поворот руки игрока когда тот держит мой предмет
Сколько ни перерыл, видимого эффекта я так и не достиг.
Пробовал менять ArmPose руки на ArmPose.EMPTY, эффекта ноль
Java:
@Hook(injectOnExit = true)
@SideOnly(Side.CLIENT)
public static void renderRightArm(RenderPlayer renderPlayer, AbstractClientPlayer entity)
{
ItemStack itemstack = entity.getHeldItemMainhand();
ItemStack itemstack1 = entity.getHeldItemOffhand();
if(itemstack.getItem() instanceof MyItem || itemstack1.getItem() instanceof MyItem) {
renderPlayer.getMainModel().rightArmPose = ModelBiped.ArmPose.EMPTY;
renderPlayer.getMainModel().leftArmPose = ModelBiped.ArmPose.EMPTY; //Дебаг показывает что код исполняется
}
}
Получилось крутить вот таким способом
Java:
@SideOnly(Side.CLIENT)
public class EventsClient {
@SubscribeEvent(priority = EventPriority.NORMAL, receiveCanceled = true)
public void preRender(RenderPlayerEvent.Pre event) {
event.getRenderer().getMainModel().bipedRightArm.isHidden = true;
}
@SubscribeEvent(priority = EventPriority.NORMAL, receiveCanceled = true)
public void postRender(RenderPlayerEvent.Post event) {
EntityPlayer player = event.getEntityPlayer();
event.getRenderer().getMainModel().bipedRightArm.isHidden = false;
event.getRenderer().getMainModel().bipedRightArm.rotationPointZ = -MathHelper.sin((float) Math.toRadians(player.renderYawOffset)) * 5.0F;
event.getRenderer().getMainModel().bipedRightArm.rotationPointY = 20;
event.getRenderer().getMainModel().bipedRightArm.rotationPointX = -MathHelper.cos((float) Math.toRadians(player.renderYawOffset)) * 5.0F;
event.getRenderer().getMainModel().bipedRightArm.rotateAngleX = (float) 25;
event.getRenderer().getMainModel().bipedRightArm.rotateAngleY = (float) -Math.toRadians(player.renderYawOffset);
event.getRenderer().getMainModel().bipedRightArm.rotateAngleZ = (float) 0;
event.getRenderer().getMainModel().bipedRightArm.renderWithRotation(0.0625F);
event.getRenderer().getMainModel().bipedRightArm.rotationPointY = 2;
}
}
Есть идеи?